0025748: Parallel version of progress indicator
[occt.git] / src / XSControl / XSControl_WorkSession.cxx
index e36152e..852a511 100644 (file)
@@ -22,6 +22,7 @@
 #include <Interface_IntVal.hxx>
 #include <Interface_Macros.hxx>
 #include <Message_Messenger.hxx>
+#include <Message_ProgressScope.hxx>
 #include <Standard_ErrorHandler.hxx>
 #include <Standard_Failure.hxx>
 #include <TColStd_HSequenceOfTransient.hxx>
@@ -400,14 +401,17 @@ Handle(Standard_Transient)  XSControl_WorkSession::Result
 //purpose  : 
 //=======================================================================
 
-Standard_Integer XSControl_WorkSession::TransferReadOne (const Handle(Standard_Transient)& ent)
+Standard_Integer XSControl_WorkSession::TransferReadOne (const Handle(Standard_Transient)& ent,
+                                                         const Message_ProgressRange& theProgress)
 {
   Handle(Interface_InterfaceModel) model = Model();
-  if (ent == model) return TransferReadRoots();
+  if (ent == model) return TransferReadRoots(theProgress);
 
   Handle(TColStd_HSequenceOfTransient) list = GiveList(ent);
-  if (list->Length() == 1) return myTransferReader->TransferOne(list->Value(1));
-  else return myTransferReader->TransferList (list);
+  if (list->Length() == 1)
+    return myTransferReader->TransferOne(list->Value(1), Standard_True, theProgress);
+  else
+    return myTransferReader->TransferList (list, Standard_True, theProgress);
 }
 
 
@@ -416,9 +420,9 @@ Standard_Integer XSControl_WorkSession::TransferReadOne (const Handle(Standard_T
 //purpose  : 
 //=======================================================================
 
-Standard_Integer XSControl_WorkSession::TransferReadRoots ()
+Standard_Integer XSControl_WorkSession::TransferReadRoots (const Message_ProgressRange& theProgress)
 {
-  return myTransferReader->TransferRoots(Graph());
+  return myTransferReader->TransferRoots(Graph(), theProgress);
 }
 
 
@@ -453,7 +457,9 @@ Handle(Interface_InterfaceModel) XSControl_WorkSession::NewModel ()
 //purpose  : 
 //=======================================================================
 
-IFSelect_ReturnStatus XSControl_WorkSession::TransferWriteShape (const TopoDS_Shape& shape, const Standard_Boolean compgraph)
+IFSelect_ReturnStatus XSControl_WorkSession::TransferWriteShape (const TopoDS_Shape& shape,
+                                                                 const Standard_Boolean compgraph,
+                                                                 const Message_ProgressRange& theProgress)
 {
   IFSelect_ReturnStatus  status;
   if (myController.IsNull()) return IFSelect_RetError;
@@ -463,7 +469,9 @@ IFSelect_ReturnStatus XSControl_WorkSession::TransferWriteShape (const TopoDS_Sh
     return IFSelect_RetVoid;
   }
 
-  status = myTransferWriter->TransferWriteShape (model,shape);
+  status = myTransferWriter->TransferWriteShape(model, shape, theProgress);
+  if (theProgress.UserBreak())
+    return IFSelect_RetStop;
   //  qui s occupe de tout, try/catch inclus
 
   //skl insert param compgraph for XDE writing 10.12.2003