[TD]fix leader line display attributes

This commit is contained in:
wandererfan
2020-01-13 12:45:48 -05:00
committed by WandererFan
parent c4ca00a1d5
commit d64d6a7c65
4 changed files with 87 additions and 56 deletions

View File

@@ -71,11 +71,9 @@ using namespace TechDrawGui;
//**************************************************************
QGILeaderLine::QGILeaderLine(QGraphicsItem* myParent,
TechDraw::DrawLeaderLine* leader) :
m_parentItem(myParent),
QGILeaderLine::QGILeaderLine() :
m_lineColor(Qt::black),
// m_hasHover(false),
m_hasHover(false),
m_blockDraw(false)
{
@@ -90,15 +88,11 @@ QGILeaderLine::QGILeaderLine(QGraphicsItem* myParent,
m_line = new QGIPrimPath();
addToGroup(m_line);
m_line->setNormalColor(getNormalColor());
m_line->setFlag(QGraphicsItem::ItemIsSelectable, false);
m_line->setAcceptHoverEvents(false);
m_line->setPrettyNormal();
m_line->setPos(0.0,0.0);
m_editPath = new QGEPath(this);
m_editPath->setNormalColor(getNormalColor());
addToGroup(m_editPath);
m_editPath->setPos(0.0, 0.0);
m_editPath->setFlag(QGraphicsItem::ItemIsSelectable, false);
@@ -109,30 +103,34 @@ QGILeaderLine::QGILeaderLine(QGraphicsItem* myParent,
m_arrow1 = new QGIArrow();
addToGroup(m_arrow1);
m_arrow1->setNormalColor(getNormalColor());
m_arrow1->setFillColor(getNormalColor());
m_arrow1->setPrettyNormal();
m_arrow1->setPos(0.0,0.0);
m_arrow1->hide();
m_arrow2 = new QGIArrow();
addToGroup(m_arrow2);
m_arrow2->setNormalColor(getNormalColor());
m_arrow2->setFillColor(getNormalColor());
m_arrow2->setPrettyNormal();
m_arrow2->setPos(0.0, 0.0);
m_arrow2->hide();
setParentItem(m_parentItem);
setViewFeature(leader);
setZValue(ZVALUE::DIMENSION);
QObject::connect(
m_editPath, SIGNAL(pointsUpdated(QPointF, std::vector<QPointF>)),
this , SLOT (onLineEditFinished(QPointF, std::vector<QPointF>))
);
}
void QGILeaderLine::setLeaderFeature(TechDraw::DrawLeaderLine* feat)
{
// Base::Console().Message("QGILL::setLeaderFeature()\n");
setViewFeature(static_cast<TechDraw::DrawView *>(feat));
float x = Rez::guiX(feat->X.getValue());
float y = Rez::guiX(-feat->Y.getValue());
setPos(x,y);
setNormalColorAll();
setPrettyNormal();
updateView();
}
QVariant QGILeaderLine::itemChange(GraphicsItemChange change, const QVariant &value)
@@ -173,6 +171,7 @@ void QGILeaderLine::mouseReleaseEvent(QGraphicsSceneMouseEvent * event)
void QGILeaderLine::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
{
// Base::Console().Message("QGILL::hoverEnter() - selected; %d\n",isSelected());
m_hasHover = true;
if (!isSelected()) {
setPrettyPre();
}
@@ -182,10 +181,10 @@ void QGILeaderLine::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
void QGILeaderLine::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
{
// Base::Console().Message("QGILL::hoverLeave() - selected; %d\n",isSelected());
m_hasHover = false;
if(!isSelected()) {
setPrettyNormal();
}
QGIView::hoverLeaveEvent(event);
}
@@ -203,6 +202,17 @@ void QGILeaderLine::onSourceChange(TechDraw::DrawView* newParent)
}
}
void QGILeaderLine::setNormalColorAll()
{
// Base::Console().Message("QGILL::setNormalColorAll - normal color: %s\n", qPrintable(getNormalColor().name()));
m_line->setNormalColor(getNormalColor());
m_editPath->setNormalColor(getNormalColor());
m_arrow1->setNormalColor(getNormalColor());
m_arrow1->setFillColor(getNormalColor());
m_arrow2->setNormalColor(getNormalColor());
m_arrow2->setFillColor(getNormalColor());
}
void QGILeaderLine::setPrettyNormal() {
// Base::Console().Message("QGILL::setPrettyNormal()\n");
m_line->setPrettyNormal();
@@ -341,27 +351,22 @@ void QGILeaderLine::draw()
{
// Base::Console().Message("QGILL::draw()- %s\n", getViewObject()->getNameInDocument());
if (m_blockDraw) {
// Base::Console().Message("QGIL::draw - block draw\n");
return;
}
if (!isVisible()) {
// Base::Console().Message("QGIL::draw - not visible\n");
return;
}
TechDraw::DrawLeaderLine* featLeader = getFeature();
if((!featLeader) ) {
// Base::Console().Message("QGIL::draw - no feature\n");
return;
}
auto vp = static_cast<ViewProviderLeader*>(getViewProvider(getViewObject()));
if ( vp == nullptr ) {
// Base::Console().Message("QGIL::draw - no viewprovider\n");
return;
}
TechDraw::DrawView* parent = featLeader->getBaseView();
if (m_editPath->inEdit()) {
// Base::Console().Message("QGIL::draw - m_editPath in edit\n");
return;
}
@@ -385,7 +390,6 @@ void QGILeaderLine::draw()
m_line->setStyle(m_lineStyle);
m_line->setWidth(getLineWidth());
m_line->setNormalColor(getNormalColor());
m_line->setPos(0,0); //make m_line coords == leader coords
std::vector<QPointF> qPoints = getWayPointsFromFeature();
@@ -394,10 +398,18 @@ void QGILeaderLine::draw()
p = p * scale;
}
}
m_line->setPath(makeLeaderPath(qPoints));
m_line->show();
setNormalColorAll();
m_line->setPath(makeLeaderPath(qPoints));
setArrows(qPoints);
if (isSelected()) {
setPrettySel();
} else if (m_hasHover) {
setPrettyPre();
} else {
setPrettyNormal();
}
}
QPainterPath QGILeaderLine::makeLeaderPath(std::vector<QPointF> qPoints)
@@ -485,6 +497,7 @@ std::vector<QPointF> QGILeaderLine::getWayPointsFromFeature(void)
void QGILeaderLine::setArrows(std::vector<QPointF> pathPoints)
{
// Base::Console().Message("QGILL::setArrows()\n");
Base::Vector3d stdX(1.0,0.0,0.0);
TechDraw::DrawLeaderLine* featLeader = getFeature();
@@ -497,8 +510,6 @@ void QGILeaderLine::setArrows(std::vector<QPointF> pathPoints)
m_arrow1->setSize(QGIArrow::getPrefArrowSize());
m_arrow1->setDirMode(true);
m_arrow1->setDirection(stdX);
m_arrow1->setNormalColor(getNormalColor());
m_arrow1->setFillColor(getNormalColor());
if (pathPoints.size() > 1) {
auto it = pathPoints.begin();
QPointF s = (*it);
@@ -519,8 +530,6 @@ void QGILeaderLine::setArrows(std::vector<QPointF> pathPoints)
m_arrow2->setWidth(getLineWidth());
m_arrow2->setDirMode(true);
m_arrow2->setDirection(-stdX);
m_arrow2->setNormalColor(getNormalColor());
m_arrow2->setFillColor(getNormalColor());
if (pathPoints.size() > 1) {
auto itr = pathPoints.rbegin();
QPointF s = (*itr);
@@ -580,6 +589,7 @@ double QGILeaderLine::getEdgeFuzz(void) const
QColor QGILeaderLine::getNormalColor()
{
// Base::Console().Message("QGILL::getNormalColor()\n");
Base::Reference<ParameterGrp> hGrp = App::GetApplication().GetUserParameter()
.GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod/TechDraw/LeaderLinens");
App::Color fcColor;
@@ -587,11 +597,14 @@ QColor QGILeaderLine::getNormalColor()
m_colNormal = fcColor.asValue<QColor>();
auto lead( dynamic_cast<TechDraw::DrawLeaderLine*>(getViewObject()) );
if( lead == nullptr )
if( lead == nullptr ) {
// Base::Console().Message("QGILL::getNormalColor - no feature\n");
return m_colNormal;
}
auto vp = static_cast<ViewProviderLeader*>(getViewProvider(getViewObject()));
if ( vp == nullptr ) {
// Base::Console().Message("QGILL::getNormalColor - no viewProvider\n");
return m_colNormal;
}