TechDraw: Rework view frames (#22869)
Co-authored-by: Ryan Kembrey <ryan.kembrey@student.uts>
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
***************************************************************************/
|
||||
|
||||
#include "PreCompiled.h"
|
||||
#include <cstdio>
|
||||
#ifndef _PreComp_
|
||||
|
||||
#include <QPainterPath>
|
||||
@@ -104,8 +105,26 @@ QVariant QGIViewPart::itemChange(GraphicsItemChange change, const QVariant& valu
|
||||
//There's nothing special for QGIVP to do when selection changes!
|
||||
}
|
||||
else if (change == ItemSceneChange && scene()) {
|
||||
QObject::disconnect(m_selectionChangedConnection);
|
||||
tidy();
|
||||
}
|
||||
else if (change == QGraphicsItem::ItemSceneHasChanged) {
|
||||
if (scene()) {
|
||||
m_selectionChangedConnection = connect(scene(), &QGraphicsScene::selectionChanged, this, [this]() {
|
||||
// When selection changes, if the mouse is not over the view,
|
||||
// hide any non-selected vertices.
|
||||
if (!isUnderMouse()) {
|
||||
for (QGraphicsItem* item : m_vertexItems) {
|
||||
if (item && !item->isSelected()) {
|
||||
item->setVisible(false);
|
||||
}
|
||||
}
|
||||
update();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return QGIView::itemChange(change, value);
|
||||
}
|
||||
|
||||
@@ -183,7 +202,6 @@ QPainterPath QGIViewPart::drawPainterPath(TechDraw::BaseGeomPtr baseGeom) const
|
||||
double rot = getViewObject()->Rotation.getValue();
|
||||
return m_pathBuilder->geomToPainterPath(baseGeom, rot);
|
||||
}
|
||||
|
||||
void QGIViewPart::updateView(bool update)
|
||||
{
|
||||
// Base::Console().message("QGIVP::updateView() - %s\n", getViewObject()->getNameInDocument());
|
||||
@@ -429,6 +447,7 @@ void QGIViewPart::drawAllEdges()
|
||||
|
||||
void QGIViewPart::drawAllVertexes()
|
||||
{
|
||||
m_vertexItems.clear();
|
||||
// dvp and vp already validated
|
||||
auto dvp(static_cast<TechDraw::DrawViewPart*>(getViewObject()));
|
||||
auto vp(static_cast<ViewProviderViewPart*>(getViewProvider(getViewObject())));
|
||||
@@ -442,23 +461,27 @@ void QGIViewPart::drawAllVertexes()
|
||||
if (showCenterMarks()) {
|
||||
QGICMark* cmItem = new QGICMark(i);
|
||||
addToGroup(cmItem);
|
||||
m_vertexItems.append(cmItem);
|
||||
cmItem->setPos(Rez::guiX((*vert)->x()), Rez::guiX((*vert)->y()));
|
||||
cmItem->setThick(0.5F * getLineWidth());//need minimum?
|
||||
cmItem->setSize(getVertexSize() * vp->CenterScale.getValue());
|
||||
cmItem->setPrettyNormal();
|
||||
cmItem->setZValue(ZVALUE::VERTEX);
|
||||
cmItem->setVisible(false);
|
||||
}
|
||||
} else {
|
||||
//regular Vertex
|
||||
if (showVertices()) {
|
||||
QGIVertex* item = new QGIVertex(i);
|
||||
addToGroup(item);
|
||||
m_vertexItems.append(item);
|
||||
item->setPos(Rez::guiX((*vert)->x()), Rez::guiX((*vert)->y()));
|
||||
item->setNormalColor(vertexColor);
|
||||
item->setFillColor(vertexColor);
|
||||
item->setRadius(getVertexSize());
|
||||
item->setPrettyNormal();
|
||||
item->setZValue(ZVALUE::VERTEX);
|
||||
item->setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -499,11 +522,6 @@ bool QGIViewPart::showVertices()
|
||||
// never show vertices in CoarseView
|
||||
return false;
|
||||
}
|
||||
if (!getFrameState()) {
|
||||
// frames are off, don't show vertices
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -519,18 +537,12 @@ bool QGIViewPart::showCenterMarks()
|
||||
// no center marks if view property is false
|
||||
return false;
|
||||
}
|
||||
|
||||
if (getFrameState()) {
|
||||
// frames are on and view property is true
|
||||
return true;
|
||||
}
|
||||
|
||||
if (prefPrintCenters()) {
|
||||
// frames are off, view property is true and Print Center Marks is true
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1299,3 +1311,27 @@ double QGIViewPart::getLineWidth() {
|
||||
double QGIViewPart::getVertexSize() {
|
||||
return getLineWidth() * Preferences::vertexScale();
|
||||
}
|
||||
|
||||
void QGIViewPart::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
QGIView::hoverEnterEvent(event);
|
||||
|
||||
for (QGraphicsItem* item : m_vertexItems) {
|
||||
if (item) {
|
||||
item->setVisible(true);
|
||||
}
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
void QGIViewPart::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||
{
|
||||
QGIView::hoverLeaveEvent(event);
|
||||
|
||||
for (QGraphicsItem* item : m_vertexItems) {
|
||||
if (item && !item->isSelected()) {
|
||||
item->setVisible(false);
|
||||
}
|
||||
}
|
||||
update();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user