From 12b6dd955bb34017eb28c9c7d7bab690249aae22 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 9 Oct 2020 02:42:13 +0200 Subject: [PATCH] Part: port class BOPProgressIndicator to OCCT 7.5 --- src/Mod/Part/Gui/TaskCheckGeometry.cpp | 53 +++++++++++++++++++++----- src/Mod/Part/Gui/TaskCheckGeometry.h | 8 +++- 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/Mod/Part/Gui/TaskCheckGeometry.cpp b/src/Mod/Part/Gui/TaskCheckGeometry.cpp index 206738b5ae..4f5b16830f 100644 --- a/src/Mod/Part/Gui/TaskCheckGeometry.cpp +++ b/src/Mod/Part/Gui/TaskCheckGeometry.cpp @@ -417,6 +417,8 @@ void TaskCheckGeometryResults::setupInterface() void TaskCheckGeometryResults::goCheck() { Gui::WaitCursor wc; + auto selection = Gui::Selection().getSelection(); + int selectedCount(0), checkedCount(0), invalidShapes(0); ResultEntry *theRoot = new ResultEntry(); @@ -426,9 +428,14 @@ void TaskCheckGeometryResults::goCheck() #if OCC_VERSION_HEX >= 0x060900 theProgress->Show(); #endif -#endif +#else + Handle(Message_ProgressIndicator) theProgress = new BOPProgressIndicator(tr("Check geometry"), Gui::getMainWindow()); + Message_ProgressRange theRange(theProgress->Start()); + Message_ProgressScope theScope(theRange, TCollection_AsciiString("BOP check..."), selection.size()); + theScope.Show(); +#endif // 0x070500 - for(const auto &sel : Gui::Selection().getSelection()) { + for(const auto &sel : selection) { selectedCount++; TopoDS_Shape shape = Part::Feature::getShape(sel.pObject,sel.SubName,true); if (shape.IsNull()) @@ -479,14 +486,17 @@ void TaskCheckGeometryResults::goCheck() #if OCC_VERSION_HEX < 0x070500 theProgress->NewScope(label.c_str()); invalidShapes += goBOPSingleCheck(shape, theRoot, baseName, theProgress); -#else - invalidShapes += goBOPSingleCheck(shape, theRoot, baseName, nullptr); -#endif - -#if OCC_VERSION_HEX < 0x070500 theProgress->EndScope(); if (theProgress->UserBreak()) break; +#else + Message_ProgressScope theInnerScope(theScope.Next(), TCollection_AsciiString(label.c_str()), 1); + theInnerScope.Show(); + //invalidShapes += goBOPSingleCheck(shape, theRoot, baseName, theInnerScope); + invalidShapes += goBOPSingleCheck(shape, theRoot, baseName, nullptr); + theInnerScope.Close(); + if (theScope.UserBreak()) + break; #endif } } @@ -1380,11 +1390,11 @@ TaskCheckGeometryDialog::~TaskCheckGeometryDialog() //////////////////////////////////////////////////////////////////////////////////////////////// -#if OCC_VERSION_HEX < 0x070500 BOPProgressIndicator::BOPProgressIndicator (const QString& title, QWidget* parent) { steps = 0; canceled = false; + myProgress = new QProgressDialog(parent); myProgress->setWindowTitle(title); myProgress->setAttribute(Qt::WA_DeleteOnClose); @@ -1395,6 +1405,7 @@ BOPProgressIndicator::~BOPProgressIndicator () myProgress->close(); } +#if OCC_VERSION_HEX < 0x070500 Standard_Boolean BOPProgressIndicator::Show (const Standard_Boolean theForce) { if (theForce) { @@ -1415,6 +1426,31 @@ Standard_Boolean BOPProgressIndicator::Show (const Standard_Boolean theForce) return Standard_True; } +#else +void BOPProgressIndicator::Show (const Message_ProgressScope& theScope, + const Standard_Boolean isForce) +{ + Standard_CString aName = theScope.Name(); //current step + myProgress->setLabelText (QString::fromLatin1(aName)); + + if (isForce) { + myProgress->show(); + } + + QCoreApplication::processEvents(); +} + +void BOPProgressIndicator::Reset() +{ + steps = 0; + canceled = false; + + time.start(); + + myProgress->setRange(0, 0); + myProgress->setValue(0); +} +#endif Standard_Boolean BOPProgressIndicator::UserBreak() { @@ -1443,6 +1479,5 @@ Standard_Boolean BOPProgressIndicator::UserBreak() return Standard_False; } -#endif #include "moc_TaskCheckGeometry.cpp" diff --git a/src/Mod/Part/Gui/TaskCheckGeometry.h b/src/Mod/Part/Gui/TaskCheckGeometry.h index c0afdb27bb..38cdce96d1 100644 --- a/src/Mod/Part/Gui/TaskCheckGeometry.h +++ b/src/Mod/Part/Gui/TaskCheckGeometry.h @@ -191,14 +191,19 @@ private: QPushButton *resultsBtn; }; -#if OCC_VERSION_HEX < 0x070500 class BOPProgressIndicator : public Message_ProgressIndicator { public: BOPProgressIndicator (const QString &title, QWidget* parent); virtual ~BOPProgressIndicator (); +#if OCC_VERSION_HEX < 0x070500 virtual Standard_Boolean Show (const Standard_Boolean theForce = Standard_True); +#else + virtual void Show (const Message_ProgressScope& theScope, + const Standard_Boolean isForce); + virtual void Reset(); +#endif virtual Standard_Boolean UserBreak(); private: @@ -207,7 +212,6 @@ private: QElapsedTimer time; QProgressDialog* myProgress; }; -#endif } #endif // TASKCHECKGEOMETRY_H