mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0031353: TDocStd_Application does not have api to set progress indicator
Add support of Message_ProgressIndicator in BinTools classes. Add support of Message_ProgressIndicator with possibility of user break in methods of opening and saving TDocStd_Application. Add tests of ProgressIndicator in TDocStd_Applacation.
This commit is contained in:
@@ -33,6 +33,7 @@
|
||||
#include <Standard_NoSuchObject.hxx>
|
||||
#include <Standard_ProgramError.hxx>
|
||||
#include <UTL.hxx>
|
||||
#include <Message_ProgressSentry.hxx>
|
||||
|
||||
IMPLEMENT_STANDARD_RTTIEXT(CDF_Application,CDM_Application)
|
||||
|
||||
@@ -84,21 +85,24 @@ void CDF_Application::Close(const Handle(CDM_Document)& aDocument) {
|
||||
//function : Retrieve
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(CDM_Document) CDF_Application::Retrieve(const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const Standard_Boolean UseStorageConfiguration) {
|
||||
Handle(CDM_Document) CDF_Application::Retrieve (const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Handle(Message_ProgressIndicator)& theProgress)
|
||||
{
|
||||
TCollection_ExtendedString nullVersion;
|
||||
return Retrieve(aFolder,aName,nullVersion,UseStorageConfiguration);
|
||||
return Retrieve(aFolder, aName, nullVersion, UseStorageConfiguration, theProgress);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Retrieve
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(CDM_Document) CDF_Application::Retrieve(const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const TCollection_ExtendedString& aVersion,
|
||||
const Standard_Boolean UseStorageConfiguration)
|
||||
Handle(CDM_Document) CDF_Application::Retrieve (const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const TCollection_ExtendedString& aVersion,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Handle(Message_ProgressIndicator)& theProgress)
|
||||
{
|
||||
Handle(CDM_MetaData) theMetaData;
|
||||
|
||||
@@ -108,7 +112,8 @@ Handle(CDM_Document) CDF_Application::Retrieve(const TCollection_ExtendedString
|
||||
theMetaData=theMetaDataDriver->MetaData(aFolder,aName,aVersion);
|
||||
|
||||
CDF_TypeOfActivation theTypeOfActivation=TypeOfActivation(theMetaData);
|
||||
Handle(CDM_Document) theDocument=Retrieve(theMetaData,UseStorageConfiguration,Standard_False);
|
||||
Handle(CDM_Document) theDocument = Retrieve(theMetaData, UseStorageConfiguration,
|
||||
Standard_False, theProgress);
|
||||
|
||||
CDF_Session::CurrentSession()->Directory()->Add(theDocument);
|
||||
Activate(theDocument,theTypeOfActivation);
|
||||
@@ -204,15 +209,20 @@ Standard_Boolean CDF_Application::SetDefaultFolder(const Standard_ExtString aFol
|
||||
//function : Retrieve
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(CDM_Document) CDF_Application::Retrieve(const Handle(CDM_MetaData)& aMetaData,const Standard_Boolean UseStorageConfiguration) {
|
||||
return Retrieve(aMetaData,UseStorageConfiguration,Standard_True);
|
||||
Handle(CDM_Document) CDF_Application::Retrieve(const Handle(CDM_MetaData)& aMetaData,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Handle(Message_ProgressIndicator)& theProgress) {
|
||||
return Retrieve(aMetaData, UseStorageConfiguration, Standard_True, theProgress);
|
||||
}
|
||||
|
||||
//=======================================================================
|
||||
//function : Retrieve
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(CDM_Document) CDF_Application::Retrieve(const Handle(CDM_MetaData)& aMetaData,const Standard_Boolean UseStorageConfiguration, const Standard_Boolean IsComponent) {
|
||||
Handle(CDM_Document) CDF_Application::Retrieve (const Handle(CDM_MetaData)& aMetaData,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Standard_Boolean IsComponent,
|
||||
const Handle(Message_ProgressIndicator)& theProgress) {
|
||||
|
||||
Handle(CDM_Document) theDocumentToReturn;
|
||||
myRetrievableStatus = PCDM_RS_DriverFailure;
|
||||
@@ -265,7 +275,7 @@ Handle(CDM_Document) CDF_Application::Retrieve(const Handle(CDM_MetaData)& aMeta
|
||||
|
||||
try {
|
||||
OCC_CATCH_SIGNALS
|
||||
theReader->Read(aMetaData->FileName(),theDocument,this);
|
||||
theReader->Read (aMetaData->FileName(), theDocument, this, theProgress);
|
||||
}
|
||||
catch (Standard_Failure const& anException) {
|
||||
myRetrievableStatus = theReader->GetStatus();
|
||||
@@ -320,7 +330,8 @@ CDF_TypeOfActivation CDF_Application::TypeOfActivation(const Handle(CDM_MetaData
|
||||
//function : Read
|
||||
//purpose :
|
||||
//=======================================================================
|
||||
Handle(CDM_Document) CDF_Application::Read (Standard_IStream& theIStream)
|
||||
Handle(CDM_Document) CDF_Application::Read (Standard_IStream& theIStream,
|
||||
const Handle(Message_ProgressIndicator)& theProgress)
|
||||
{
|
||||
Handle(CDM_Document) aDoc;
|
||||
Handle(Storage_Data) dData;
|
||||
@@ -358,8 +369,7 @@ Handle(CDM_Document) CDF_Application::Read (Standard_IStream& theIStream)
|
||||
try
|
||||
{
|
||||
OCC_CATCH_SIGNALS
|
||||
|
||||
aReader->Read (theIStream, dData, aDoc, this);
|
||||
aReader->Read (theIStream, dData, aDoc, this, theProgress);
|
||||
}
|
||||
catch (Standard_Failure const& anException)
|
||||
{
|
||||
|
@@ -87,7 +87,11 @@ public:
|
||||
//!
|
||||
//! Since the version is not specified in this syntax, the latest wil be used.
|
||||
//! A link is kept with the database through an instance of CDM_MetaData
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve (const TCollection_ExtendedString& aFolder, const TCollection_ExtendedString& aName, const Standard_Boolean UseStorageConfiguration = Standard_True);
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve
|
||||
(const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const Standard_Boolean UseStorageConfiguration = Standard_True,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
//! This method retrieves a document from the database.
|
||||
//! If the Document references other documents which have
|
||||
@@ -103,18 +107,28 @@ public:
|
||||
//! Handle(CDM_Document) theDocument=myApplication->Retrieve("|user|cascade","box","2");
|
||||
//! A link is kept with the database through an instance
|
||||
//! of CDM_MetaData
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve (const TCollection_ExtendedString& aFolder, const TCollection_ExtendedString& aName, const TCollection_ExtendedString& aVersion, const Standard_Boolean UseStorageConfiguration = Standard_True);
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve
|
||||
(const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const TCollection_ExtendedString& aVersion,
|
||||
const Standard_Boolean UseStorageConfiguration = Standard_True,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
Standard_EXPORT PCDM_ReaderStatus CanRetrieve (const TCollection_ExtendedString& aFolder, const TCollection_ExtendedString& aName);
|
||||
Standard_EXPORT PCDM_ReaderStatus CanRetrieve (const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName);
|
||||
|
||||
Standard_EXPORT PCDM_ReaderStatus CanRetrieve (const TCollection_ExtendedString& aFolder, const TCollection_ExtendedString& aName, const TCollection_ExtendedString& aVersion);
|
||||
Standard_EXPORT PCDM_ReaderStatus CanRetrieve (const TCollection_ExtendedString& aFolder,
|
||||
const TCollection_ExtendedString& aName,
|
||||
const TCollection_ExtendedString& aVersion);
|
||||
|
||||
//! Checks status after Retrieve
|
||||
PCDM_ReaderStatus GetRetrieveStatus() const { return myRetrievableStatus; }
|
||||
|
||||
//! Reads aDoc from standard SEEKABLE stream theIStream,
|
||||
//! the stream should support SEEK fuctionality
|
||||
Standard_EXPORT Handle(CDM_Document) Read (Standard_IStream& theIStream);
|
||||
Standard_EXPORT Handle(CDM_Document) Read
|
||||
(Standard_IStream& theIStream,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
//! Returns instance of read driver for specified format.
|
||||
//!
|
||||
@@ -147,7 +161,8 @@ public:
|
||||
//! try to retrieve a Format directly in the file or in
|
||||
//! application resource by using extension. returns
|
||||
//! True if found;
|
||||
Standard_EXPORT Standard_Boolean Format (const TCollection_ExtendedString& aFileName, TCollection_ExtendedString& theFormat);
|
||||
Standard_EXPORT Standard_Boolean Format (const TCollection_ExtendedString& aFileName,
|
||||
TCollection_ExtendedString& theFormat);
|
||||
|
||||
Standard_EXPORT Standard_ExtString DefaultFolder();
|
||||
|
||||
@@ -158,15 +173,6 @@ friend class CDF_Session;
|
||||
|
||||
DEFINE_STANDARD_RTTIEXT(CDF_Application,CDM_Application)
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
Standard_EXPORT CDF_Application();
|
||||
|
||||
PCDM_ReaderStatus myRetrievableStatus;
|
||||
NCollection_IndexedDataMap<TCollection_ExtendedString, Handle(PCDM_RetrievalDriver)> myReaders;
|
||||
NCollection_IndexedDataMap<TCollection_ExtendedString, Handle(PCDM_StorageDriver)> myWriters;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
@@ -183,11 +189,19 @@ private:
|
||||
//! retrieved and modified since the previous retrieval.
|
||||
//! You do not need to call <Activate>, but you should redefine
|
||||
//! this method to implement application specific behavior.
|
||||
Standard_EXPORT virtual void Activate (const Handle(CDM_Document)& aDocument, const CDF_TypeOfActivation aTypeOfActivation);
|
||||
Standard_EXPORT virtual void Activate (const Handle(CDM_Document)& aDocument,
|
||||
const CDF_TypeOfActivation aTypeOfActivation);
|
||||
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve (const Handle(CDM_MetaData)& aMetaData, const Standard_Boolean UseStorageConfiguration) Standard_OVERRIDE;
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve
|
||||
(const Handle(CDM_MetaData)& aMetaData,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL) Standard_OVERRIDE;
|
||||
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve (const Handle(CDM_MetaData)& aMetaData, const Standard_Boolean UseStorageConfiguration, const Standard_Boolean IsComponent);
|
||||
Standard_EXPORT Handle(CDM_Document) Retrieve
|
||||
(const Handle(CDM_MetaData)& aMetaData,
|
||||
const Standard_Boolean UseStorageConfiguration,
|
||||
const Standard_Boolean IsComponent,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
Standard_EXPORT Standard_Integer DocumentVersion (const Handle(CDM_MetaData)& theMetaData) Standard_OVERRIDE;
|
||||
|
||||
@@ -195,6 +209,14 @@ private:
|
||||
|
||||
Standard_EXPORT PCDM_ReaderStatus CanRetrieve (const Handle(CDM_MetaData)& aMetaData);
|
||||
|
||||
protected:
|
||||
|
||||
Standard_EXPORT CDF_Application();
|
||||
|
||||
PCDM_ReaderStatus myRetrievableStatus;
|
||||
NCollection_IndexedDataMap<TCollection_ExtendedString, Handle(PCDM_RetrievalDriver)> myReaders;
|
||||
NCollection_IndexedDataMap<TCollection_ExtendedString, Handle(PCDM_StorageDriver)> myWriters;
|
||||
|
||||
private:
|
||||
TCollection_ExtendedString myDefaultFolder;
|
||||
};
|
||||
|
@@ -145,11 +145,12 @@ CDF_StoreSetNameStatus CDF_Store::SetName(const Standard_ExtString aName)
|
||||
return SetName(theName);
|
||||
}
|
||||
|
||||
void CDF_Store::Realize() {
|
||||
void CDF_Store::Realize (const Handle(Message_ProgressIndicator)& theProgress)
|
||||
{
|
||||
Standard_ProgramError_Raise_if(!myList->IsConsistent(),"information are missing");
|
||||
Handle(CDM_MetaData) m;
|
||||
myText = "";
|
||||
myStatus = myList->Store(m,myText);
|
||||
myStatus = myList->Store(m, myText, theProgress);
|
||||
if(myStatus==PCDM_SS_OK) myPath = m->Path();
|
||||
}
|
||||
Standard_ExtString CDF_Store::Path() const {
|
||||
|
@@ -28,6 +28,9 @@
|
||||
#include <Standard_ExtString.hxx>
|
||||
#include <CDF_StoreSetNameStatus.hxx>
|
||||
#include <CDF_SubComponentStatus.hxx>
|
||||
|
||||
#include <Message_ProgressIndicator.hxx>
|
||||
|
||||
class CDF_StoreList;
|
||||
class CDM_Document;
|
||||
class TCollection_ExtendedString;
|
||||
@@ -85,7 +88,7 @@ public:
|
||||
|
||||
Standard_EXPORT Standard_Boolean SetPreviousVersion (const Standard_ExtString aPreviousVersion);
|
||||
|
||||
Standard_EXPORT void Realize();
|
||||
Standard_EXPORT void Realize (const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
//! returns the complete path of the created meta-data.
|
||||
Standard_EXPORT Standard_ExtString Path() const;
|
||||
|
@@ -74,8 +74,10 @@ void CDF_StoreList::Next() {
|
||||
Handle(CDM_Document) CDF_StoreList::Value() const {
|
||||
return myIterator.Key();
|
||||
}
|
||||
PCDM_StoreStatus CDF_StoreList::Store (Handle(CDM_MetaData)& aMetaData, TCollection_ExtendedString& aStatusAssociatedText) {
|
||||
|
||||
PCDM_StoreStatus CDF_StoreList::Store (Handle(CDM_MetaData)& aMetaData,
|
||||
TCollection_ExtendedString& aStatusAssociatedText,
|
||||
const Handle(Message_ProgressIndicator)& theProgress)
|
||||
{
|
||||
Handle(CDF_MetaDataDriver) theMetaDataDriver = CDF_Session::CurrentSession()->MetaDataDriver();
|
||||
|
||||
PCDM_StoreStatus status = PCDM_SS_OK;
|
||||
@@ -112,7 +114,7 @@ PCDM_StoreStatus CDF_StoreList::Store (Handle(CDM_MetaData)& aMetaData, TCollect
|
||||
}
|
||||
TCollection_ExtendedString theName=theMetaDataDriver->BuildFileName(theDocument);
|
||||
|
||||
aDocumentStorageDriver->Write(theDocument,theName);
|
||||
aDocumentStorageDriver->Write(theDocument, theName, theProgress);
|
||||
status = aDocumentStorageDriver->GetStoreStatus();
|
||||
aMetaData = theMetaDataDriver->CreateMetaData(theDocument,theName);
|
||||
theDocument->SetMetaData(aMetaData);
|
||||
|
@@ -26,6 +26,8 @@
|
||||
#include <Standard_Transient.hxx>
|
||||
#include <Standard_Boolean.hxx>
|
||||
#include <PCDM_StoreStatus.hxx>
|
||||
#include <Message_ProgressIndicator.hxx>
|
||||
|
||||
class CDM_Document;
|
||||
class Standard_NoSuchObject;
|
||||
class CDM_MetaData;
|
||||
@@ -48,7 +50,9 @@ public:
|
||||
|
||||
//! stores each object of the storelist in the reverse
|
||||
//! order of which they had been added.
|
||||
Standard_EXPORT PCDM_StoreStatus Store (Handle(CDM_MetaData)& aMetaData, TCollection_ExtendedString& aStatusAssociatedText);
|
||||
Standard_EXPORT PCDM_StoreStatus Store (Handle(CDM_MetaData)& aMetaData,
|
||||
TCollection_ExtendedString& aStatusAssociatedText,
|
||||
const Handle(Message_ProgressIndicator)& theProgress = NULL);
|
||||
|
||||
Standard_EXPORT void Init();
|
||||
|
||||
|
Reference in New Issue
Block a user