diff --git a/src/Mod/TechDraw/App/DrawViewClip.cpp b/src/Mod/TechDraw/App/DrawViewClip.cpp index e0ba7f5c24..5c3154be27 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.cpp +++ b/src/Mod/TechDraw/App/DrawViewClip.cpp @@ -53,9 +53,8 @@ DrawViewClip::DrawViewClip(void) ADD_PROPERTY_TYPE(Height ,(100),group,App::Prop_None,"The height of the view area of this clip"); ADD_PROPERTY_TYPE(Width ,(100),group,App::Prop_None,"The width of the view area of this clip"); ADD_PROPERTY_TYPE(ShowFrame ,(0) ,group,App::Prop_None,"Specifies if the clip frame appears on the page or not"); - ADD_PROPERTY_TYPE(ShowLabels ,(0) ,group,App::Prop_None,"Specifies if View labels appear within the clip area"); ADD_PROPERTY_TYPE(Views ,(0) ,group,App::Prop_None,"The Views in this Clip group"); - Views.setScope(App::LinkScope::Global); + Views.setScope(App::LinkScope::Global); // hide N/A properties ScaleType.setStatus(App::Property::ReadOnly,true); diff --git a/src/Mod/TechDraw/App/DrawViewClip.h b/src/Mod/TechDraw/App/DrawViewClip.h index 856d626c39..43a86300be 100644 --- a/src/Mod/TechDraw/App/DrawViewClip.h +++ b/src/Mod/TechDraw/App/DrawViewClip.h @@ -49,7 +49,6 @@ public: App::PropertyLength Width; App::PropertyLength Height; App::PropertyBool ShowFrame; - App::PropertyBool ShowLabels; App::PropertyLinkList Views; void addView(DrawView *view); diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index 776375e3d7..99368484a2 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -401,10 +401,10 @@ void CmdTechDrawToggleFrame::activated(int iMsg) Gui::Document* activeGui = Gui::Application::Instance->getDocument(page->getDocument()); Gui::ViewProvider* vp = activeGui->getViewProvider(page); - ViewProviderPage* dvp = dynamic_cast(vp); + ViewProviderPage* vpp = dynamic_cast(vp); - if (dvp && dvp->getMDIViewPage()) { - dvp->getMDIViewPage()->setFrameState(!dvp->getMDIViewPage()->getFrameState()); + if (vpp != nullptr) { + vpp->toggleFrameState(); } else { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No TechDraw Page"), QObject::tr("Need a TechDraw Page for this command")); diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.cpp b/src/Mod/TechDraw/Gui/MDIViewPage.cpp index a4bb764d22..635459c9d6 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.cpp +++ b/src/Mod/TechDraw/Gui/MDIViewPage.cpp @@ -109,8 +109,7 @@ MDIViewPage::MDIViewPage(ViewProviderPage *pageVp, Gui::Document* doc, QWidget* : Gui::MDIView(doc, parent), m_orientation(QPrinter::Landscape), m_paperSize(QPrinter::A4), - m_vpPage(pageVp), - m_frameState(true) + m_vpPage(pageVp) { setMouseTracking(true); @@ -733,8 +732,10 @@ void MDIViewPage::print(QPrinter* printer) static_cast (blockConnection(true)); // avoid to be notified by itself Gui::Selection().clearSelection(); - m_view->toggleMarkers(false); - m_view->scene()->update(); + bool saveState = m_vpPage->getFrameState(); + m_vpPage->setFrameState(false); + m_vpPage->setTemplateMarkers(false); + m_view->refreshViews(); Gui::Selection().clearSelection(); @@ -751,7 +752,9 @@ void MDIViewPage::print(QPrinter* printer) m_view->scene()->render(&p, targetRect,sourceRect); // Reset - m_view->toggleMarkers(true); + m_vpPage->setFrameState(saveState); + m_vpPage->setTemplateMarkers(saveState); + m_view->refreshViews(); //bool block = static_cast (blockConnection(false)); } @@ -815,15 +818,6 @@ QPrinter::PaperSize MDIViewPage::getPaperSize(int w, int h) const return ps; } - -void MDIViewPage::setFrameState(bool state) -{ - m_frameState = state; - m_view->toggleMarkers(state); - m_view->scene()->update(); -} - - PyObject* MDIViewPage::getPyObject() { Py_Return; @@ -842,7 +836,7 @@ void MDIViewPage::contextMenuEvent(QContextMenuEvent *event) void MDIViewPage::toggleFrame(void) { - setFrameState(!getFrameState()); + m_vpPage->toggleFrameState(); } void MDIViewPage::toggleKeepUpdated(void) @@ -885,7 +879,6 @@ void MDIViewPage::saveSVG(std::string file) void MDIViewPage::saveDXF() { -// TechDraw::DrawPage* page = m_vpPage->getDrawPage(); QString defaultDir; QString fileName = Gui::FileDialog::getSaveFileName(Gui::getMainWindow(), QString::fromUtf8(QT_TR_NOOP("Save Dxf File ")), diff --git a/src/Mod/TechDraw/Gui/MDIViewPage.h b/src/Mod/TechDraw/Gui/MDIViewPage.h index 5e2b87f22e..3ef99c037a 100644 --- a/src/Mod/TechDraw/Gui/MDIViewPage.h +++ b/src/Mod/TechDraw/Gui/MDIViewPage.h @@ -83,9 +83,6 @@ public: void saveDXF(std::string file); void savePDF(std::string file); - void setFrameState(bool state); - bool getFrameState(void) {return m_frameState;}; - void setDocumentObject(const std::string&); void setDocumentName(const std::string&); PyObject* getPyObject(); @@ -158,8 +155,6 @@ private: QPrinter::PaperSize m_paperSize; ViewProviderPage *m_vpPage; - bool m_frameState; - QList m_sceneSelected; QList deleteItems; }; diff --git a/src/Mod/TechDraw/Gui/QGIProjGroup.cpp b/src/Mod/TechDraw/Gui/QGIProjGroup.cpp index 936545ce52..5d6031d3f8 100644 --- a/src/Mod/TechDraw/Gui/QGIProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/QGIProjGroup.cpp @@ -61,7 +61,7 @@ QGIProjGroup::QGIProjGroup() setFlag(ItemIsSelectable, false); setFlag(ItemIsMovable, true); setFiltersChildEvents(true); - borderVisible = false; +// setFrameState(false); } TechDraw::DrawProjGroup * QGIProjGroup::getDrawView(void) const diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp index ee6af24c40..6233c9d71a 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.cpp @@ -31,6 +31,8 @@ #include #endif // #ifndef _PreComp_ +#include + #include #include #include diff --git a/src/Mod/TechDraw/Gui/QGISVGTemplate.h b/src/Mod/TechDraw/Gui/QGISVGTemplate.h index 209991dae5..21a16680fb 100644 --- a/src/Mod/TechDraw/Gui/QGISVGTemplate.h +++ b/src/Mod/TechDraw/Gui/QGISVGTemplate.h @@ -27,6 +27,8 @@ QT_BEGIN_NAMESPACE class QGraphicsScene; class QGraphicsSvgItem; class QSvgRenderer; +class QFile; +class QString; QT_END_NAMESPACE namespace TechDraw { diff --git a/src/Mod/TechDraw/Gui/QGIView.cpp b/src/Mod/TechDraw/Gui/QGIView.cpp index 64eb8efe7e..0da35e7b06 100644 --- a/src/Mod/TechDraw/Gui/QGIView.cpp +++ b/src/Mod/TechDraw/Gui/QGIView.cpp @@ -63,10 +63,12 @@ #include "QGIVertex.h" #include "QGIViewClip.h" #include "ViewProviderDrawingView.h" +#include "ViewProviderPage.h" #include "MDIViewPage.h" #include "QGICMark.h" #include "QGTracker.h" +#include #include #include #include @@ -82,7 +84,6 @@ QGIView::QGIView() :QGraphicsItemGroup(), viewObj(nullptr), m_locked(false), - borderVisible(true), m_innerView(false) { setCacheMode(QGraphicsItem::NoCache); @@ -93,7 +94,6 @@ QGIView::QGIView() setFlag(QGraphicsItem::ItemSendsScenePositionChanges, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges,true); - m_colCurrent = getNormalColor(); m_pen.setColor(m_colCurrent); @@ -400,11 +400,13 @@ void QGIView::toggleCache(bool state) setCacheMode(NoCache); } -void QGIView::toggleBorder(bool state) -{ - borderVisible = state; - QGIView::draw(); -} +////this is obs? +//void QGIView::toggleBorder(bool state) +//{ +// Base::Console().Message("QGIV::toggleBorder(%d)\n",state); +//// m_borderVisible = state; +//// QGIView::draw(); +//} void QGIView::draw() { @@ -418,6 +420,7 @@ void QGIView::draw() void QGIView::drawCaption() { +// Base::Console().Message("QGIV::drawCaption()\n"); prepareGeometryChange(); QRectF displayArea = customChildrenBoundingRect(); m_caption->setDefaultTextColor(m_colCurrent); @@ -431,7 +434,7 @@ void QGIView::drawCaption() m_caption->setX(displayCenter.x() - captionArea.width()/2.); double labelHeight = (1 - labelCaptionFudge) * m_label->boundingRect().height(); auto vp = static_cast(getViewProvider(getViewObject())); - if (borderVisible || vp->KeepLabel.getValue()) { //place below label if label visible + if (getFrameState() || vp->KeepLabel.getValue()) { //place below label if label visible m_caption->setY(displayArea.bottom() + labelHeight); } else { m_caption->setY(displayArea.bottom() + labelCaptionFudge * getPrefFontSize()); @@ -441,20 +444,21 @@ void QGIView::drawCaption() void QGIView::drawBorder() { +// Base::Console().Message("QGIV::drawBorder() - %s\n",getViewName()); auto feat = getViewObject(); if (feat == nullptr) { return; } - drawCaption(); //show neither auto vp = static_cast(getViewProvider(getViewObject())); - if (!borderVisible && !vp->KeepLabel.getValue()) { + if (!getFrameState() && !vp->KeepLabel.getValue()) { m_label->hide(); m_border->hide(); m_lock->hide(); return; } + drawCaption(); //show both or show label //double margin = 2.0; @@ -510,7 +514,7 @@ void QGIView::drawBorder() m_border->setPos(0.,0.); m_label->show(); - if (borderVisible) { + if (getFrameState()) { m_border->show(); } } @@ -616,6 +620,25 @@ MDIViewPage* QGIView::getMDIViewPage(void) const return result; } +bool QGIView::getFrameState(void) +{ +// Base::Console().Message("QGIV::getFrameState() - %s\n",getViewName()); + bool result = true; + TechDraw::DrawView* dv = getViewObject(); + if (dv != nullptr) { + TechDraw::DrawPage* page = dv->findParentPage(); + if (page != nullptr) { + Gui::Document* activeGui = Gui::Application::Instance->getDocument(page->getDocument()); + Gui::ViewProvider* vp = activeGui->getViewProvider(page); + ViewProviderPage* vpp = dynamic_cast(vp); + if (vpp != nullptr) { + result = vpp->getFrameState(); + } + } + } + return result; +} + QColor QGIView::getNormalColor() { Base::Reference hGrp = getParmGroupCol(); diff --git a/src/Mod/TechDraw/Gui/QGIView.h b/src/Mod/TechDraw/Gui/QGIView.h index 372248df96..3cc63fa636 100644 --- a/src/Mod/TechDraw/Gui/QGIView.h +++ b/src/Mod/TechDraw/Gui/QGIView.h @@ -77,7 +77,7 @@ public: TechDraw::DrawView * getViewObject() const; double getScale(void); - virtual void toggleBorder(bool state = true); + virtual bool getFrameState(void); virtual void toggleCache(bool state); virtual void updateView(bool update = false); virtual void drawBorder(void); @@ -139,8 +139,6 @@ protected: //std::string alignMode; //QGIView* alignAnchor; bool m_locked; - bool borderVisible; - bool m_visibility; bool m_innerView; //View is inside another View QPen m_pen; diff --git a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index a74f7ca34a..bd423dd551 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -130,7 +130,7 @@ QGIViewBalloon::QGIViewBalloon() : balloonLabel, SIGNAL(hover(bool)), this , SLOT (hover(bool))); - toggleBorder(false); +// toggleBorder(false); setZValue(ZVALUE::DIMENSION); //note: this won't paint dimensions over another View if it stacks //above this Dimension's parent view. need Layers? diff --git a/src/Mod/TechDraw/Gui/QGIViewClip.cpp b/src/Mod/TechDraw/Gui/QGIViewClip.cpp index 79c954ebbf..585a9ed990 100644 --- a/src/Mod/TechDraw/Gui/QGIViewClip.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewClip.cpp @@ -94,7 +94,7 @@ void QGIViewClip::draw() } drawClip(); - if (borderVisible) { + if (getFrameState()) { drawBorder(); } } @@ -140,11 +140,11 @@ void QGIViewClip::drawClip() double x = Rez::guiX(qgiv->getViewObject()->X.getValue()); double y = Rez::guiX(qgiv->getViewObject()->Y.getValue()); qgiv->setPosition(clipOrigin.x() + x, clipOrigin.y() + y); - if (viewClip->ShowLabels.getValue()) { - qgiv->toggleBorder(true); - } else { - qgiv->toggleBorder(false); - } +// if (viewClip->ShowLabels.getValue()) { +// qgiv->toggleBorder(true); +// } else { +// qgiv->toggleBorder(false); +// } qgiv->show(); } } else { @@ -163,7 +163,7 @@ void QGIViewClip::drawClip() m_cliparea->removeFromGroup(qv); removeFromGroup(qv); qv->isInnerView(false); - qv->toggleBorder(true); +// qv->toggleBorder(true); } } } diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index e401f318b4..88fdfd6da1 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -344,7 +344,7 @@ QGIViewDimension::QGIViewDimension() : dimLines->setStyle(Qt::SolidLine); - toggleBorder(false); +// toggleBorder(false); setZValue(ZVALUE::DIMENSION); //note: this won't paint dimensions over another View if it stacks //above this Dimension's parent view. need Layers? diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.cpp b/src/Mod/TechDraw/Gui/QGIViewPart.cpp index 5296c6ac86..339753c43d 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewPart.cpp @@ -469,29 +469,31 @@ void QGIViewPart::drawViewPart() fcColor.setPackedValue(hGrp->GetUnsigned("VertexColor", 0x00000000)); QColor vertexColor = fcColor.asValue(); - bool usePolygonHLR = viewPart->CoarseView.getValue(); - const std::vector &verts = viewPart->getVertexGeometry(); - std::vector::const_iterator vert = verts.begin(); - bool showCenters = vp->ArcCenterMarks.getValue(); - double cAdjust = vp->CenterScale.getValue(); - for(int i = 0 ; vert != verts.end(); ++vert, i++) { - if ((*vert)->isCenter) { - if (showCenters) { - QGICMark* cmItem = new QGICMark(i); - addToGroup(cmItem); - cmItem->setPos(Rez::guiX((*vert)->pnt.x), Rez::guiX((*vert)->pnt.y)); - cmItem->setThick(0.5 * lineWidth); //need minimum? - cmItem->setSize( cAdjust * lineWidth * vertexScaleFactor); - cmItem->setZValue(ZVALUE::VERTEX); + if (getFrameState()) { + bool usePolygonHLR = viewPart->CoarseView.getValue(); + const std::vector &verts = viewPart->getVertexGeometry(); + std::vector::const_iterator vert = verts.begin(); + bool showCenters = vp->ArcCenterMarks.getValue(); + double cAdjust = vp->CenterScale.getValue(); + for(int i = 0 ; vert != verts.end(); ++vert, i++) { + if ((*vert)->isCenter) { + if (showCenters) { + QGICMark* cmItem = new QGICMark(i); + addToGroup(cmItem); + cmItem->setPos(Rez::guiX((*vert)->pnt.x), Rez::guiX((*vert)->pnt.y)); + cmItem->setThick(0.5 * lineWidth); //need minimum? + cmItem->setSize( cAdjust * lineWidth * vertexScaleFactor); + cmItem->setZValue(ZVALUE::VERTEX); + } + } else if(!usePolygonHLR){ //Disable dots WHEN usePolygonHLR + QGIVertex *item = new QGIVertex(i); + item->setNormalColor(vertexColor); + item->setPrettyNormal(); + addToGroup(item); + item->setPos(Rez::guiX((*vert)->pnt.x), Rez::guiX((*vert)->pnt.y)); + item->setRadius(lineWidth * vertexScaleFactor); + item->setZValue(ZVALUE::VERTEX); } - } else if(!usePolygonHLR){ //Disable dots WHEN usePolygonHLR - QGIVertex *item = new QGIVertex(i); - item->setNormalColor(vertexColor); - item->setPrettyNormal(); - addToGroup(item); - item->setPos(Rez::guiX((*vert)->pnt.x), Rez::guiX((*vert)->pnt.y)); - item->setRadius(lineWidth * vertexScaleFactor); - item->setZValue(ZVALUE::VERTEX); } } @@ -951,23 +953,25 @@ void QGIViewPart::toggleCosmeticLines(bool state) } } -void QGIViewPart::toggleVertices(bool state) -{ - QList items = childItems(); - for(QList::iterator it = items.begin(); it != items.end(); it++) { - QGIVertex *vert = dynamic_cast(*it); - QGICMark *mark = dynamic_cast(*it); +//// is there any circumstance where vertices need to be in a different state from frames? +//void QGIViewPart::toggleVertices(bool state) +//{ +// Base::Console().Message("QGIVP::toggleVertices(%d) - %s\n",state,getViewName()); +//// QList items = childItems(); +//// for(QList::iterator it = items.begin(); it != items.end(); it++) { +//// QGIVertex *vert = dynamic_cast(*it); +//// QGICMark *mark = dynamic_cast(*it); - if(vert) { - if (!mark) { //leave center marks showing - if(state) - vert->show(); - else - vert->hide(); - } - } - } -} +//// if(vert) { +//// if (!mark) { //leave center marks showing +//// if(state) +//// vert->show(); +//// else +//// vert->hide(); +//// } +//// } +//// } +//} TechDraw::DrawHatch* QGIViewPart::faceIsHatched(int i,std::vector hatchObjs) const { diff --git a/src/Mod/TechDraw/Gui/QGIViewPart.h b/src/Mod/TechDraw/Gui/QGIViewPart.h index 8ccdf48684..7822302a45 100644 --- a/src/Mod/TechDraw/Gui/QGIViewPart.h +++ b/src/Mod/TechDraw/Gui/QGIViewPart.h @@ -54,7 +54,6 @@ public: void toggleCache(bool state) override; void toggleCosmeticLines(bool state); - void toggleVertices(bool state); void setViewPartFeature(TechDraw::DrawViewPart *obj); virtual void updateView(bool update = false) override; void tidy(); diff --git a/src/Mod/TechDraw/Gui/QGVPage.cpp b/src/Mod/TechDraw/Gui/QGVPage.cpp index fb840c6676..becd9528a6 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.cpp +++ b/src/Mod/TechDraw/Gui/QGVPage.cpp @@ -98,16 +98,19 @@ using namespace TechDrawGui; QGVPage::QGVPage(ViewProviderPage *vp, QGraphicsScene* s, QWidget *parent) - : QGraphicsView(parent) - , pageTemplate(0) - , m_renderer(Native) - , drawBkg(true) - , m_vpPage(0) + : QGraphicsView(parent), + pageTemplate(0), + m_renderer(Native), + drawBkg(true), + m_vpPage(0) +// , +// m_borderState(true) { assert(vp); m_vpPage = vp; const char* name = vp->getDrawPage()->getNameInDocument(); setObjectName(QString::fromLocal8Bit(name)); + m_vpPage->setGraphicsView(this); setScene(s); setMouseTracking(true); @@ -682,29 +685,14 @@ void QGVPage::setHighQualityAntialiasing(bool highQualityAntialiasing) #endif } -void QGVPage::toggleMarkers(bool enable) +void QGVPage::refreshViews(void) { +// Base::Console().Message("QGVP::refreshViews()\n"); QList list = scene()->items(); for (QList::iterator it = list.begin(); it != list.end(); ++it) { QGIView *itemView = dynamic_cast(*it); if(itemView) { - itemView->setSelected(false); - itemView->toggleBorder(enable); - QGIViewPart *viewPart = dynamic_cast(*it); - if(viewPart) { - viewPart->toggleVertices(enable); - } - } - QGISVGTemplate* itemTemplate = dynamic_cast (*it); - if (itemTemplate) { - std::vector textFields = itemTemplate->getTextFields(); - for (auto& t:textFields) { - if (enable) { - t->show(); - } else { - t->hide(); - } - } + itemView->updateView(true); } } } @@ -754,9 +742,11 @@ void QGVPage::saveSvg(QString filename) Gui::Selection().clearSelection(); - toggleMarkers(false); //fiddle cache, vertices, frames, etc + bool saveState = m_vpPage->getFrameState(); + m_vpPage->setFrameState(false); + m_vpPage->setTemplateMarkers(false); toggleHatch(false); - scene()->update(); + refreshViews(); viewport()->repaint(); double width = Rez::guiX(page->getPageWidth()); @@ -771,9 +761,10 @@ void QGVPage::saveSvg(QString filename) scene()->render(&p, targetRect,sourceRect); p.end(); - toggleMarkers(true); + m_vpPage->setFrameState(saveState); + m_vpPage->setTemplateMarkers(saveState); toggleHatch(true); - scene()->update(); + refreshViews(); viewport()->repaint(); tempFile->close(); diff --git a/src/Mod/TechDraw/Gui/QGVPage.h b/src/Mod/TechDraw/Gui/QGVPage.h index 9b9f073d50..acefe5df48 100644 --- a/src/Mod/TechDraw/Gui/QGVPage.h +++ b/src/Mod/TechDraw/Gui/QGVPage.h @@ -93,7 +93,7 @@ public: void addLeaderToParent(QGILeaderLine* lead, QGIView* parent); // const std::vector & getViews() const { return views; } //only used in MDIVP - std::vector getViews() const; //only used in MDIVP + std::vector getViews() const; int addQView(QGIView * view); int removeQView(QGIView *view); @@ -110,8 +110,9 @@ public: TechDraw::DrawPage * getDrawPage(); - void toggleMarkers(bool enable); void toggleHatch(bool enable); + virtual void refreshViews(void); + /// Renders the page to SVG with filename. void saveSvg(QString filename); @@ -155,6 +156,8 @@ private: int m_reversePan; int m_reverseScroll; bool m_balloonPlacing; + + bool m_borderState; }; } // namespace MDIViewPageGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp index f2a6d3b977..673298e68f 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDrawingView.cpp @@ -69,7 +69,7 @@ ViewProviderDrawingView::ViewProviderDrawingView() // Do not show in property editor why? wf WF: because DisplayMode applies only to coin and we // don't use coin. - DisplayMode.setStatus(App::Property::ReadOnly,true); + DisplayMode.setStatus(App::Property::Hidden,true); m_docReady = true; } diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp index 3bfed29079..940cfd3a34 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.cpp @@ -50,8 +50,6 @@ #include #include -#include "MDIViewPage.h" -#include "ViewProviderPage.h" #include #include #include @@ -62,6 +60,13 @@ #include #include +#include "MDIViewPage.h" +#include "QGVPage.h" +#include "QGITemplate.h" +#include "ViewProviderTemplate.h" +#include "ViewProviderPage.h" + + using namespace TechDrawGui; #define _SHOWDRAWING 10 @@ -79,7 +84,11 @@ ViewProviderPage::ViewProviderPage() m_pageName("") { sPixmap = "TechDraw_Tree_Page"; + static const char *group = "Frames"; + ADD_PROPERTY_TYPE(ShowFrames ,(true),group,App::Prop_None,"Show or hide View frames and Labels on this Page"); + + ShowFrames.setStatus(App::Property::ReadOnly,true); Visibility.setStatus(App::Property::Hidden,true); DisplayMode.setStatus(App::Property::Hidden,true); } @@ -356,6 +365,47 @@ bool ViewProviderPage::isShow(void) const return Visibility.getValue(); } +bool ViewProviderPage::getFrameState(void) +{ + bool result = ShowFrames.getValue(); + return result; +} + +void ViewProviderPage::setFrameState(bool state) +{ + ShowFrames.setValue(state); +} + +void ViewProviderPage::toggleFrameState(void) +{ +// Base::Console().Message("VPP::toggleFrameState()\n"); + if (m_graphicsView != nullptr) { + setFrameState(!getFrameState()); + m_graphicsView->refreshViews(); + setTemplateMarkers(getFrameState()); + } +} + +void ViewProviderPage::setTemplateMarkers(bool state) +{ +// Base::Console().Message("VPP::setTemplateMarkers(%d)\n",state); + App::DocumentObject *templateFeat = nullptr; + templateFeat = getDrawPage()->Template.getValue(); + Gui::Document* guiDoc = Gui::Application::Instance->getDocument(templateFeat->getDocument()); + Gui::ViewProvider* vp = guiDoc->getViewProvider(templateFeat); + ViewProviderTemplate* vpt = dynamic_cast(vp); + vpt->setMarkers(state); + QGITemplate* t = vpt->getQTemplate(); + if (t != nullptr) { + t->updateView(true); + } +} + +void ViewProviderPage::setGraphicsView(QGVPage* gv) +{ + m_graphicsView = gv; +} + //! Redo the whole visual page void ViewProviderPage::onGuiRepaint(const TechDraw::DrawPage* dp) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderPage.h b/src/Mod/TechDraw/Gui/ViewProviderPage.h index c47aacb70b..bbfe423a2f 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderPage.h +++ b/src/Mod/TechDraw/Gui/ViewProviderPage.h @@ -37,6 +37,7 @@ namespace TechDraw{ namespace TechDrawGui { class MDIViewPage; +class QGVPage; class TechDrawGuiExport ViewProviderPage : public Gui::ViewProviderDocumentObject { @@ -48,6 +49,8 @@ public: /// destructor virtual ~ViewProviderPage(); + App::PropertyBool ShowFrames; + virtual void attach(App::DocumentObject *); virtual void setDisplayMode(const char* ModeName); virtual bool useNewSelectionModel(void) const {return false;} @@ -82,6 +85,12 @@ public: bool showMDIViewPage(); void removeMDIView(void); + bool getFrameState(void); + void setFrameState(bool state); + void toggleFrameState(void); + void setTemplateMarkers(bool state); + void setGraphicsView(QGVPage* gv); + protected: bool setEdit(int ModNum); @@ -89,6 +98,8 @@ private: QPointer m_mdiView; bool m_docReady; std::string m_pageName; + bool m_frameState; + QGVPage* m_graphicsView; }; } // namespace TechDrawGui diff --git a/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp b/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp index e37d89281a..5b2d8b107b 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderTemplate.cpp @@ -46,11 +46,14 @@ #include #include #include + #include "QGITemplate.h" +#include "QGISVGTemplate.h" #include "QGVPage.h" #include "MDIViewPage.h" -#include "ViewProviderTemplate.h" +#include "TemplateTextField.h" #include "ViewProviderPage.h" +#include "ViewProviderTemplate.h" using namespace TechDrawGui; @@ -62,7 +65,8 @@ PROPERTY_SOURCE(TechDrawGui::ViewProviderTemplate, Gui::ViewProviderDocumentObje ViewProviderTemplate::ViewProviderTemplate() { sPixmap = "TechDraw_Tree_PageTemplate"; - DisplayMode.setStatus(App::Property::ReadOnly,true); + + DisplayMode.setStatus(App::Property::Hidden,true); } ViewProviderTemplate::~ViewProviderTemplate() @@ -160,6 +164,24 @@ QGITemplate* ViewProviderTemplate::getQTemplate(void) return result; } +void ViewProviderTemplate::setMarkers(bool state) +{ +// Base::Console().Message("VPT::setMarkers(%d)\n",state); + QGITemplate* qTemplate = getQTemplate(); + QGISVGTemplate* qSvgTemplate = dynamic_cast (qTemplate); + if (qSvgTemplate != nullptr) { + std::vector textFields = qSvgTemplate->getTextFields(); + for (auto& t:textFields) { + if (state) { + t->show(); + } else { + t->hide(); + } + } + qSvgTemplate->updateView(true); + } +} + MDIViewPage* ViewProviderTemplate::getMDIViewPage(void) { MDIViewPage* myMdi = nullptr; diff --git a/src/Mod/TechDraw/Gui/ViewProviderTemplate.h b/src/Mod/TechDraw/Gui/ViewProviderTemplate.h index 721fee31d7..8929620cbf 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderTemplate.h +++ b/src/Mod/TechDraw/Gui/ViewProviderTemplate.h @@ -58,6 +58,7 @@ public: TechDraw::DrawTemplate* getTemplate() const; MDIViewPage* getMDIViewPage(void); + void setMarkers(bool state); }; } // namespace TechDrawGui