[TD]add progress reporting framework
This commit is contained in:
committed by
WandererFan
parent
7e701969af
commit
ac63550122
@@ -34,6 +34,7 @@
|
||||
#include <Gui/Application.h>
|
||||
#include <Gui/Control.h>
|
||||
#include <Gui/Document.h>
|
||||
#include <Gui/MainWindow.h>
|
||||
|
||||
#include <Mod/TechDraw/App/DrawPage.h>
|
||||
#include <Mod/TechDraw/App/DrawView.h>
|
||||
@@ -60,7 +61,6 @@ 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::Hidden,true);
|
||||
m_docReady = true;
|
||||
}
|
||||
|
||||
ViewProviderDrawingView::~ViewProviderDrawingView()
|
||||
@@ -73,9 +73,11 @@ void ViewProviderDrawingView::attach(App::DocumentObject *pcFeat)
|
||||
ViewProviderDocumentObject::attach(pcFeat);
|
||||
|
||||
auto bnd = boost::bind(&ViewProviderDrawingView::onGuiRepaint, this, bp::_1);
|
||||
auto bndProgressMessage = boost::bind(&ViewProviderDrawingView::onProgressMessage, this, bp::_1, bp::_2, bp::_3);
|
||||
auto feature = getViewObject();
|
||||
if (feature) {
|
||||
connectGuiRepaint = feature->signalGuiPaint.connect(bnd);
|
||||
connectProgressMessage = feature->signalProgressMessage.connect(bndProgressMessage);
|
||||
//TODO: would be good to start the QGIV creation process here, but no guarantee we actually have
|
||||
// MDIVP or QGVP yet.
|
||||
// but parent page might. we may not be part of the document yet though!
|
||||
@@ -152,9 +154,8 @@ QGIView* ViewProviderDrawingView::getQView()
|
||||
TechDraw::DrawView* dv = getViewObject();
|
||||
if (dv) {
|
||||
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument());
|
||||
if (guiDoc != nullptr) {
|
||||
Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
|
||||
ViewProviderPage* vpp = dynamic_cast<ViewProviderPage*>(vp);
|
||||
if (guiDoc) {
|
||||
ViewProviderPage* vpp = getViewProviderPage();
|
||||
if (vpp) {
|
||||
if (vpp->getQGSPage()) {
|
||||
qView = dynamic_cast<QGIView *>(vpp->getQGSPage()->findQViewForDocObj(getViewObject()));
|
||||
@@ -172,13 +173,11 @@ bool ViewProviderDrawingView::isShow() const
|
||||
|
||||
void ViewProviderDrawingView::startRestoring()
|
||||
{
|
||||
m_docReady = false;
|
||||
Gui::ViewProviderDocumentObject::startRestoring();
|
||||
}
|
||||
|
||||
void ViewProviderDrawingView::finishRestoring()
|
||||
{
|
||||
m_docReady = true;
|
||||
if (Visibility.getValue()) {
|
||||
show();
|
||||
} else {
|
||||
@@ -201,18 +200,23 @@ void ViewProviderDrawingView::updateData(const App::Property* prop)
|
||||
Gui::ViewProviderDocumentObject::updateData(prop);
|
||||
}
|
||||
|
||||
MDIViewPage* ViewProviderDrawingView::getMDIViewPage() const
|
||||
ViewProviderPage* ViewProviderDrawingView::getViewProviderPage() const
|
||||
{
|
||||
MDIViewPage* result = nullptr;
|
||||
Gui::Document* guiDoc = Gui::Application::Instance->getDocument(getViewObject()->getDocument());
|
||||
if (guiDoc) {
|
||||
Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
|
||||
ViewProviderPage* vpp = dynamic_cast<ViewProviderPage*>(vp);
|
||||
if (vpp) {
|
||||
result = vpp->getMDIViewPage();
|
||||
}
|
||||
return dynamic_cast<ViewProviderPage*>(vp);
|
||||
}
|
||||
return result;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
MDIViewPage* ViewProviderDrawingView::getMDIViewPage() const
|
||||
{
|
||||
ViewProviderPage* vpp = getViewProviderPage();
|
||||
if (vpp) {
|
||||
return vpp->getMDIViewPage();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
Gui::MDIView *ViewProviderDrawingView::getMDIView() const
|
||||
@@ -235,8 +239,7 @@ void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv)
|
||||
for (auto& v: views) {
|
||||
if (v == getViewObject()) {
|
||||
//view v belongs to this page p
|
||||
Gui::ViewProvider* vp = guiDoc->getViewProvider(p);
|
||||
ViewProviderPage* vpPage = dynamic_cast<ViewProviderPage*>(vp);
|
||||
ViewProviderPage* vpPage = getViewProviderPage();
|
||||
if (vpPage) {
|
||||
if (vpPage->getQGSPage()) {
|
||||
QGIView* qView = dynamic_cast<QGIView *>(vpPage->getQGSPage()->findQViewForDocObj(v));
|
||||
@@ -255,9 +258,8 @@ void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv)
|
||||
QGIView* qgiv = getQView();
|
||||
if (qgiv) {
|
||||
qgiv->updateView(true);
|
||||
} else { //we are not part of the Gui page yet. ask page to add us.
|
||||
Gui::ViewProvider* vp = guiDoc->getViewProvider(getViewObject()->findParentPage());
|
||||
ViewProviderPage* vpPage = dynamic_cast<ViewProviderPage*>(vp);
|
||||
} else { //we are not part of the Gui page yet. ask page to add us.
|
||||
ViewProviderPage* vpPage = getViewProviderPage();
|
||||
if (vpPage) {
|
||||
if (vpPage->getQGSPage()) {
|
||||
vpPage->getQGSPage()->addView(dv);
|
||||
@@ -268,6 +270,32 @@ void ViewProviderDrawingView::onGuiRepaint(const TechDraw::DrawView* dv)
|
||||
}
|
||||
}
|
||||
|
||||
//handle status updates from App/DrawView
|
||||
void ViewProviderDrawingView::onProgressMessage(const TechDraw::DrawView* dv,
|
||||
const std::string featureName,
|
||||
const std::string text)
|
||||
{
|
||||
// Q_UNUSED(featureName)
|
||||
Q_UNUSED(dv)
|
||||
// Q_UNUSED(text)
|
||||
showProgressMessage(featureName, text);
|
||||
}
|
||||
|
||||
void ViewProviderDrawingView::showProgressMessage(const std::string featureName, const std::string text) const
|
||||
{
|
||||
QString msg = QString::fromUtf8("%1 %2")
|
||||
.arg(Base::Tools::fromStdString(featureName),
|
||||
Base::Tools::fromStdString(text));
|
||||
if (Gui::getMainWindow()) {
|
||||
//neither of these work! Base::Console().Message() output preempts these messages??
|
||||
// Gui::getMainWindow()->showMessage(msg, 3000);
|
||||
// Gui::getMainWindow()->showStatus(Gui::MainWindow::Msg, msg);
|
||||
//Temporary implementation. This works, but the messages are queued up and
|
||||
//not displayed in the report window in real time??
|
||||
Base::Console().Message("%s\n", qPrintable(msg));
|
||||
}
|
||||
}
|
||||
|
||||
TechDraw::DrawView* ViewProviderDrawingView::getViewObject() const
|
||||
{
|
||||
return dynamic_cast<TechDraw::DrawView*>(pcObject);
|
||||
|
||||
Reference in New Issue
Block a user