From 80bba4f0d28a7d58eab96d7ec17ec335aa19effa Mon Sep 17 00:00:00 2001 From: wandererfan Date: Thu, 28 Mar 2019 11:15:51 -0400 Subject: [PATCH] Add Indicator for PositionLocked state --- src/Mod/TechDraw/Gui/QGCustomImage.cpp | 8 +++++- src/Mod/TechDraw/Gui/QGCustomImage.h | 2 ++ src/Mod/TechDraw/Gui/QGIView.cpp | 26 ++++++++++++++++++ src/Mod/TechDraw/Gui/QGIView.h | 5 ++++ src/Mod/TechDraw/Gui/Resources/TechDraw.qrc | 1 + .../Gui/Resources/icons/techdraw-lock.png | Bin 0 -> 1615 bytes src/Mod/TechDraw/Gui/ZVALUE.h | 1 + 7 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/Mod/TechDraw/Gui/Resources/icons/techdraw-lock.png diff --git a/src/Mod/TechDraw/Gui/QGCustomImage.cpp b/src/Mod/TechDraw/Gui/QGCustomImage.cpp index 95a3db155e..c8765dcd61 100644 --- a/src/Mod/TechDraw/Gui/QGCustomImage.cpp +++ b/src/Mod/TechDraw/Gui/QGCustomImage.cpp @@ -36,7 +36,7 @@ using namespace TechDrawGui; -QGCustomImage::QGCustomImage() +QGCustomImage::QGCustomImage() { setCacheMode(QGraphicsItem::NoCache); setAcceptHoverEvents(false); @@ -74,6 +74,12 @@ bool QGCustomImage::load(QString fileSpec) return(success); } +QSize QGCustomImage::imageSize(void) +{ + QSize result = m_px.size(); + return result; +} + void QGCustomImage::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) { QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; diff --git a/src/Mod/TechDraw/Gui/QGCustomImage.h b/src/Mod/TechDraw/Gui/QGCustomImage.h index 535323bd8f..9b8947fcf9 100644 --- a/src/Mod/TechDraw/Gui/QGCustomImage.h +++ b/src/Mod/TechDraw/Gui/QGCustomImage.h @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -52,6 +53,7 @@ public: virtual void centerAt(QPointF centerPos); virtual void centerAt(double cX, double cY); virtual bool load(QString fileSpec); + virtual QSize imageSize(void); protected: QPixmap m_px; diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index 1ea077cd92..3626b85181 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -60,6 +60,7 @@ #include "QGCustomText.h" #include "QGICaption.h" #include "QGCustomClip.h" +#include "QGCustomImage.h" #include "QGIViewClip.h" #include "ViewProviderDrawingView.h" #include "MDIViewPage.h" @@ -106,6 +107,13 @@ QGIView::QGIView() addToGroup(m_border); m_caption = new QGICaption(); addToGroup(m_caption); + m_lock = new QGCustomImage(); + m_lock->setParentItem(m_label); + m_lock->load(QString::fromUtf8(":/icons/techdraw-lock.png")); + QSize sizeLock = m_lock->imageSize(); + m_lockWidth = (double) sizeLock.width(); + m_lockHeight = (double) sizeLock.height(); + m_lock->hide(); isVisible(true); } @@ -393,12 +401,18 @@ void QGIView::drawCaption() void QGIView::drawBorder() { + auto feat = getViewObject(); + if (feat == nullptr) { + return; + } + drawCaption(); //show neither auto vp = static_cast(getViewProvider(getViewObject())); if (!borderVisible && !vp->KeepLabel.getValue()) { m_label->hide(); m_border->hide(); + m_lock->hide(); return; } @@ -406,6 +420,7 @@ void QGIView::drawBorder() //double margin = 2.0; m_label->hide(); m_border->hide(); + m_lock->hide(); m_label->setDefaultTextColor(m_colCurrent); m_font.setFamily(getPrefFont()); @@ -439,6 +454,17 @@ void QGIView::drawBorder() displayArea.top(), frameWidth, frameHeight); + + double lockX = labelArea.left(); + double lockY = labelArea.bottom() - (2 * m_lockHeight); + if (feat->isLocked()) { + m_lock->setZValue(ZVALUE::LOCK); + m_lock->setPos(lockX,lockY); + m_lock->show(); + } else { + m_lock->hide(); + } + prepareGeometryChange(); m_border->setRect(frameArea.adjusted(-2,-2,2,2)); m_border->setPos(0.,0.); diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index a8ae0a44b4..5ca539657c 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -47,6 +47,7 @@ class QGCustomText; class QGICaption; class MDIViewPage; class QGIViewClip; +class QGCustomImage; class TechDrawGuiExport QGIView : public QGraphicsItemGroup { @@ -141,7 +142,11 @@ protected: QGCustomLabel* m_label; QGCustomBorder* m_border; QGICaption* m_caption; + QGCustomImage* m_lock; QPen m_decorPen; + double m_lockWidth; + double m_lockHeight; + }; } // namespace diff --git a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc index 0334b719e5..9d57b36d32 100644 --- a/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc +++ b/src/Mod/TechDraw/Gui/Resources/TechDraw.qrc @@ -70,6 +70,7 @@ icons/arrow-down.svg icons/arrow-ccw.svg icons/arrow-cw.svg + icons/techdraw-lock.png translations/TechDraw_af.qm translations/TechDraw_zh-CN.qm translations/TechDraw_zh-TW.qm diff --git a/src/Mod/TechDraw/Gui/Resources/icons/techdraw-lock.png b/src/Mod/TechDraw/Gui/Resources/icons/techdraw-lock.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ba8c876f661f0fe773246323261f1a1cb73c36 GIT binary patch literal 1615 zcmV-V2C(^wP)b8U8{xd8vpaCF2tL}S;6_TJ745>6ZgeNug+dqBS`nce5k*TkTBY;}#e!s$OjDI$ z+cYK(nM|5w=H7cg7x&I1$(=iQ(wQ{>-JLn-e82O(&V49WsjaXx0(%8^D%cA20L|Xt zSzuh?x`L}3e!C7=S7S%jGI%>YWWfP}!$3cPp%fcUlOEHg*)Uu>$6?&ExNTWDA_YT# z0mn=@F$DMO4mb#}3mgL;jVi^fZEfspYojk7$58&uI3oO$%kksP3_s7zV7sul1P-U+ zr+NVz18`Kq5rF+29USWFqA3yyxiwb{TJy!^B;QR>10e8O8r}z-`vHuk;9KC$L?pt= zzCIq0$E(5!fC$RRvwtrx^7hymi&_Jm8iBU}U1=>N$j|_Mpx{VHG|KmzH}i;TE`{(w z#Jd*Hl6b#q5ww?sD1`#rqfy>yZ|6)V!=l#P9|r3#T&ToQ(SrllqkXJB_e_Ql zZ{G&EF#;)k^3gZb2Vg(YpW3jY2*+ zd%)1RW%1GYIL9U@u|=@7Cg*wj#g-NZ+??+BY=-k-3jP3gob2o4i9`Y|g5xGNpH570 zI+Fod5O^mI-%vTpBPlold=A9-wYGAovl9X0hJk4q49(ATaBK|V+6X*d)q^SbRM^pG z7z`#7AcCzmT7)y1OaX2l*qes01KdGZHB-Vu_G(!;v3`iPZwy@UH@<9mlOKZ+)|LBz7*J z;}_y4DD@vLg5@m)SOiyXpwjMrA`4z#7a+?ZnwHP;^Pnp)v?78?G39Eye+*I~b*d$E zMZm&D-5@|IMI}&`Jy^C7CBWKl0t2K=YX*W=1uW!=r}}x2a9*q$;$@4}JqOD+@2jds zqL%{JEyRV5uYV6#ks5>x0?*gWa6P5qqDrmqTwOC2Lwsd$@Ii8{(6htCKpm65QCd+X zIomEi*A@$9*|mGQ^r#9oX8G~vW238dZ|DzLY%4yKgN%vK$xwAn1shcXv$-7CZr)rm zxRFYAchgk%VxXWEIjBXLSy)&TsB+Eaa=yLM7w|#!ox-b<pIuqt5rEq+5i7O9N*UV$qd%f4)^b=RKsar4}q}efL344Sg`-hCUebp}L+b|439WU%;3V_zABeiYOJn%@~mg8(Uh!Rcx3s zA^T{kMlJVSv0=spRCQIrr+RxU41F+K_iq-~{mY|>f{PCtqLLI`{2!Ed+_V#@Fa`hs N002ovPDHLkV1ls}(og^Z literal 0 HcmV?d00001 diff --git a/src/Mod/TechDraw/Gui/ZVALUE.h b/src/Mod/TechDraw/Gui/ZVALUE.h index 34f420bef3..ffe0f19fd3 100644 --- a/src/Mod/TechDraw/Gui/ZVALUE.h +++ b/src/Mod/TechDraw/Gui/ZVALUE.h @@ -17,5 +17,6 @@ namespace ZVALUE { const int SECTIONLINE = 80; //TODO: change to "DECORATION"? section lines, symmetry lines, etc? const int HIGHLIGHT = 80; const int MATTING = 100; + const int LOCK = 200; } #endif