Fix #3695 Frame toggle sync
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -49,7 +49,6 @@ public:
|
||||
App::PropertyLength Width;
|
||||
App::PropertyLength Height;
|
||||
App::PropertyBool ShowFrame;
|
||||
App::PropertyBool ShowLabels;
|
||||
App::PropertyLinkList Views;
|
||||
|
||||
void addView(DrawView *view);
|
||||
|
||||
@@ -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<ViewProviderPage*>(vp);
|
||||
ViewProviderPage* vpp = dynamic_cast<ViewProviderPage*>(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"));
|
||||
|
||||
@@ -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<void> (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<void> (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 ")),
|
||||
|
||||
@@ -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<QGraphicsItem*> m_sceneSelected;
|
||||
QList<QGIView *> deleteItems;
|
||||
};
|
||||
|
||||
@@ -61,7 +61,7 @@ QGIProjGroup::QGIProjGroup()
|
||||
setFlag(ItemIsSelectable, false);
|
||||
setFlag(ItemIsMovable, true);
|
||||
setFiltersChildEvents(true);
|
||||
borderVisible = false;
|
||||
// setFrameState(false);
|
||||
}
|
||||
|
||||
TechDraw::DrawProjGroup * QGIProjGroup::getDrawView(void) const
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
#include <boost/regex.hpp>
|
||||
#endif // #ifndef _PreComp_
|
||||
|
||||
#include <QFile>
|
||||
|
||||
#include <App/Application.h>
|
||||
#include <Base/Console.h>
|
||||
#include <Base/Exception.h>
|
||||
|
||||
@@ -27,6 +27,8 @@ QT_BEGIN_NAMESPACE
|
||||
class QGraphicsScene;
|
||||
class QGraphicsSvgItem;
|
||||
class QSvgRenderer;
|
||||
class QFile;
|
||||
class QString;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace TechDraw {
|
||||
|
||||
@@ -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 <Mod/TechDraw/App/DrawPage.h>
|
||||
#include <Mod/TechDraw/App/DrawViewClip.h>
|
||||
#include <Mod/TechDraw/App/DrawProjGroup.h>
|
||||
#include <Mod/TechDraw/App/DrawProjGroupItem.h>
|
||||
@@ -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<ViewProviderDrawingView*>(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<ViewProviderDrawingView*>(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<ViewProviderPage*>(vp);
|
||||
if (vpp != nullptr) {
|
||||
result = vpp->getFrameState();
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QColor QGIView::getNormalColor()
|
||||
{
|
||||
Base::Reference<ParameterGrp> hGrp = getParmGroupCol();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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?
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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?
|
||||
|
||||
|
||||
@@ -469,29 +469,31 @@ void QGIViewPart::drawViewPart()
|
||||
fcColor.setPackedValue(hGrp->GetUnsigned("VertexColor", 0x00000000));
|
||||
QColor vertexColor = fcColor.asValue<QColor>();
|
||||
|
||||
bool usePolygonHLR = viewPart->CoarseView.getValue();
|
||||
const std::vector<TechDrawGeometry::Vertex *> &verts = viewPart->getVertexGeometry();
|
||||
std::vector<TechDrawGeometry::Vertex *>::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<TechDrawGeometry::Vertex *> &verts = viewPart->getVertexGeometry();
|
||||
std::vector<TechDrawGeometry::Vertex *>::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<QGraphicsItem*> items = childItems();
|
||||
for(QList<QGraphicsItem*>::iterator it = items.begin(); it != items.end(); it++) {
|
||||
QGIVertex *vert = dynamic_cast<QGIVertex *>(*it);
|
||||
QGICMark *mark = dynamic_cast<QGICMark *>(*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<QGraphicsItem*> items = childItems();
|
||||
//// for(QList<QGraphicsItem*>::iterator it = items.begin(); it != items.end(); it++) {
|
||||
//// QGIVertex *vert = dynamic_cast<QGIVertex *>(*it);
|
||||
//// QGICMark *mark = dynamic_cast<QGICMark *>(*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<TechDraw::DrawHatch*> hatchObjs) const
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<QGraphicsItem*> list = scene()->items();
|
||||
for (QList<QGraphicsItem*>::iterator it = list.begin(); it != list.end(); ++it) {
|
||||
QGIView *itemView = dynamic_cast<QGIView *>(*it);
|
||||
if(itemView) {
|
||||
itemView->setSelected(false);
|
||||
itemView->toggleBorder(enable);
|
||||
QGIViewPart *viewPart = dynamic_cast<QGIViewPart *>(*it);
|
||||
if(viewPart) {
|
||||
viewPart->toggleVertices(enable);
|
||||
}
|
||||
}
|
||||
QGISVGTemplate* itemTemplate = dynamic_cast<QGISVGTemplate*> (*it);
|
||||
if (itemTemplate) {
|
||||
std::vector<TemplateTextField *> 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();
|
||||
|
||||
@@ -93,7 +93,7 @@ public:
|
||||
void addLeaderToParent(QGILeaderLine* lead, QGIView* parent);
|
||||
|
||||
// const std::vector<QGIView *> & getViews() const { return views; } //only used in MDIVP
|
||||
std::vector<QGIView *> getViews() const; //only used in MDIVP
|
||||
std::vector<QGIView *> 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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,8 +50,6 @@
|
||||
#include <Gui/MainWindow.h>
|
||||
#include <Gui/ViewProviderDocumentObject.h>
|
||||
|
||||
#include "MDIViewPage.h"
|
||||
#include "ViewProviderPage.h"
|
||||
#include <Mod/TechDraw/App/DrawPage.h>
|
||||
#include <Mod/TechDraw/App/DrawView.h>
|
||||
#include <Mod/TechDraw/App/DrawProjGroupItem.h>
|
||||
@@ -62,6 +60,13 @@
|
||||
#include <Mod/TechDraw/App/DrawHatch.h>
|
||||
#include <Mod/TechDraw/App/DrawUtil.h>
|
||||
|
||||
#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<ViewProviderTemplate*>(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)
|
||||
{
|
||||
|
||||
@@ -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<MDIViewPage> m_mdiView;
|
||||
bool m_docReady;
|
||||
std::string m_pageName;
|
||||
bool m_frameState;
|
||||
QGVPage* m_graphicsView;
|
||||
};
|
||||
|
||||
} // namespace TechDrawGui
|
||||
|
||||
@@ -46,11 +46,14 @@
|
||||
#include <Mod/TechDraw/App/DrawTemplate.h>
|
||||
#include <Mod/TechDraw/App/DrawSVGTemplate.h>
|
||||
#include <Mod/TechDraw/App/DrawPage.h>
|
||||
|
||||
#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<QGISVGTemplate*> (qTemplate);
|
||||
if (qSvgTemplate != nullptr) {
|
||||
std::vector<TemplateTextField *> textFields = qSvgTemplate->getTextFields();
|
||||
for (auto& t:textFields) {
|
||||
if (state) {
|
||||
t->show();
|
||||
} else {
|
||||
t->hide();
|
||||
}
|
||||
}
|
||||
qSvgTemplate->updateView(true);
|
||||
}
|
||||
}
|
||||
|
||||
MDIViewPage* ViewProviderTemplate::getMDIViewPage(void)
|
||||
{
|
||||
MDIViewPage* myMdi = nullptr;
|
||||
|
||||
@@ -58,6 +58,7 @@ public:
|
||||
TechDraw::DrawTemplate* getTemplate() const;
|
||||
MDIViewPage* getMDIViewPage(void);
|
||||
|
||||
void setMarkers(bool state);
|
||||
};
|
||||
|
||||
} // namespace TechDrawGui
|
||||
|
||||
Reference in New Issue
Block a user