[TD]fix LL edit when no MDI

This commit is contained in:
wandererfan
2020-02-16 12:19:33 -05:00
committed by WandererFan
parent 3a2fd3c2f3
commit 9e6d1ad077
3 changed files with 88 additions and 22 deletions

View File

@@ -86,15 +86,37 @@ TaskLeaderLine::TaskLeaderLine(TechDrawGui::ViewProviderLeader* leadVP) :
Base::Console().Error("TaskLeaderLine - bad parameters. Can not proceed.\n");
return;
}
ui->setupUi(this);
m_lineFeat = m_lineVP->getFeature();
App::DocumentObject* obj = m_lineFeat->LeaderParent.getValue();
if ( obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
m_baseFeat = static_cast<TechDraw::DrawView*>(m_lineFeat->LeaderParent.getValue());
}
m_basePage = m_lineFeat->findParentPage();
if ( m_basePage == nullptr ) {
Base::Console().Error("TaskRichAnno - bad parameters (2). Can not proceed.\n");
return;
}
App::DocumentObject* obj = m_lineFeat->LeaderParent.getValue();
if (obj != nullptr) {
if (obj->isDerivedFrom(TechDraw::DrawView::getClassTypeId()) ) {
m_baseFeat = static_cast<TechDraw::DrawView*>(m_lineFeat->LeaderParent.getValue());
}
}
Gui::Document* activeGui = Gui::Application::Instance->getDocument(m_basePage->getDocument());
Gui::ViewProvider* vp = activeGui->getViewProvider(m_basePage);
ViewProviderPage* vpp = static_cast<ViewProviderPage*>(vp);
m_qgParent = nullptr;
m_haveMdi = true;
m_mdi = vpp->getMDIViewPage();
if (m_mdi != nullptr) {
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
if (m_baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(m_baseFeat);
}
} else {
m_haveMdi = false;
}
//TODO: when/if leaders are allowed to be parented to Page, check for m_baseFeat will be removed
if ( (m_lineFeat == nullptr) ||
@@ -104,11 +126,9 @@ TaskLeaderLine::TaskLeaderLine(TechDrawGui::ViewProviderLeader* leadVP) :
return;
}
setUiEdit();
ui->setupUi(this);
m_mdi = m_lineVP->getMDIViewPage();
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
setUiEdit();
m_attachPoint = Rez::guiX(Base::Vector3d(m_lineFeat->X.getValue(),
-m_lineFeat->Y.getValue(),
@@ -123,7 +143,9 @@ TaskLeaderLine::TaskLeaderLine(TechDrawGui::ViewProviderLeader* leadVP) :
saveState();
m_trackerMode = QGTracker::TrackerMode::Line;
m_saveContextPolicy = m_mdi->contextMenuPolicy();
if (m_haveMdi) {
m_saveContextPolicy = m_mdi->contextMenuPolicy();
}
}
//ctor for creation
@@ -148,14 +170,25 @@ TaskLeaderLine::TaskLeaderLine(TechDraw::DrawView* baseFeat,
return;
}
ui->setupUi(this);
Gui::Document* activeGui = Gui::Application::Instance->getDocument(m_basePage->getDocument());
Gui::ViewProvider* vp = activeGui->getViewProvider(m_basePage);
ViewProviderPage* vpp = static_cast<ViewProviderPage*>(vp);
// vpp->show();
m_qgParent = nullptr;
m_haveMdi = true;
m_mdi = vpp->getMDIViewPage();
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
if (m_mdi != nullptr) {
m_scene = m_mdi->m_scene;
m_view = m_mdi->getQGVPage();
if (baseFeat != nullptr) {
m_qgParent = m_view->findQViewForDocObj(baseFeat);
}
} else {
m_haveMdi = false;
}
ui->setupUi(this);
setUiPrimary();
@@ -166,7 +199,9 @@ TaskLeaderLine::TaskLeaderLine(TechDraw::DrawView* baseFeat,
ui->pbCancelEdit->setEnabled(false);
m_trackerMode = QGTracker::TrackerMode::Line;
m_saveContextPolicy = m_mdi->contextMenuPolicy();
if (m_haveMdi) {
m_saveContextPolicy = m_mdi->contextMenuPolicy();
}
}
@@ -217,9 +252,16 @@ void TaskLeaderLine::setUiPrimary()
std::string baseName = m_baseFeat->getNameInDocument();
ui->leBaseView->setText(Base::Tools::fromStdString(baseName));
}
ui->pbTracker->setText(QString::fromUtf8("Pick points"));
ui->pbTracker->setEnabled(true);
ui->pbCancelEdit->setEnabled(true);
if (m_haveMdi) {
ui->pbTracker->setEnabled(true);
ui->pbCancelEdit->setEnabled(true);
} else {
ui->pbTracker->setEnabled(false);
ui->pbCancelEdit->setEnabled(false);
}
int aSize = getPrefArrowStyle() + 1;
ui->cboxStartSym->setCurrentIndex(aSize);
@@ -251,8 +293,13 @@ void TaskLeaderLine::setUiEdit()
ui->cboxStartSym->setCurrentIndex(m_lineFeat->StartSymbol.getValue() + 1);
ui->cboxEndSym->setCurrentIndex(m_lineFeat->EndSymbol.getValue() + 1);
ui->pbTracker->setText(QString::fromUtf8("Edit points"));
ui->pbTracker->setEnabled(true);
ui->pbCancelEdit->setEnabled(true);
if (m_haveMdi) {
ui->pbTracker->setEnabled(true);
ui->pbCancelEdit->setEnabled(true);
} else {
ui->pbTracker->setEnabled(false);
ui->pbCancelEdit->setEnabled(false);
}
}
if (m_lineVP != nullptr) {
@@ -383,6 +430,11 @@ void TaskLeaderLine::onTrackerClicked(bool b)
Q_UNUSED(b);
// Base::Console().Message("TTL::onTrackerClicked() m_pbTrackerState: %d\n",
// m_pbTrackerState);
if (!m_haveMdi) {
Base::Console().Message("TLL::onTrackerClicked - no Mdi, no Tracker!\n");
return;
}
if ( (m_pbTrackerState == TRACKERSAVE) &&
(getCreateMode()) ){
if (m_tracker != nullptr) {
@@ -479,6 +531,9 @@ void TaskLeaderLine::onTrackerClicked(bool b)
void TaskLeaderLine::startTracker(void)
{
// Base::Console().Message("TTL::startTracker()\n");
if (!m_haveMdi) {
return;
}
if (m_trackerMode == QGTracker::TrackerMode::None) {
return;
}
@@ -548,6 +603,9 @@ void TaskLeaderLine::onTrackerFinished(std::vector<QPointF> pts, QGIView* qgPare
void TaskLeaderLine::removeTracker(void)
{
// Base::Console().Message("TTL::removeTracker()\n");
if (!m_haveMdi) {
return;
}
if ( (m_tracker != nullptr) &&
(m_tracker->scene() != nullptr) ) {
m_scene->removeItem(m_tracker);
@@ -590,6 +648,9 @@ QGIView* TaskLeaderLine::findParentQGIV()
void TaskLeaderLine::setEditCursor(QCursor c)
{
if (!m_haveMdi) {
return;
}
if (m_baseFeat != nullptr) {
QGIView* qgivBase = m_view->findQViewForDocObj(m_baseFeat);
qgivBase->setCursor(c);
@@ -711,7 +772,9 @@ bool TaskLeaderLine::accept()
Gui::Command::doCommand(Gui::Command::Gui,"Gui.ActiveDocument.resetEdit()");
m_mdi->setContextMenuPolicy(m_saveContextPolicy);
if (m_haveMdi) {
m_mdi->setContextMenuPolicy(m_saveContextPolicy);
}
return true;
}