0023523: In session DRAW it is impossible to close document having name already once...
authorgka <gka@opencascade.com>
Fri, 14 Dec 2012 12:17:11 +0000 (16:17 +0400)
committergka <gka@opencascade.com>
Fri, 14 Dec 2012 12:17:11 +0000 (16:17 +0400)
Added destructor for TDocStd_Document which performs destruction of document in logical order in order to avoid exception when Undo and Redo fields are destructed after THF_Data field.
Added removing name of closed document from tcl variables in the DRAW in order to avoid exception during use the same name for new document.
Modification to avoid compilation error class ViewerTest
Minor correction in test caf basic G3

25 files changed:
src/CDM/CDM_Document.cdl
src/DDocStd/DDocStd_ApplicationCommands.cxx
src/TDocStd/TDocStd_Document.cdl
src/TDocStd/TDocStd_Document.cxx
src/ViewerTest/ViewerTest.cdl
src/ViewerTest/ViewerTest.cxx
tests/bugs/caf/bug23489
tests/caf/basic/G3
tests/caf/bugs/B6
tests/caf/named_shape/E1
tests/caf/named_shape/E2
tests/caf/named_shape/E3
tests/caf/named_shape/E4
tests/caf/named_shape/E5
tests/caf/named_shape/E6
tests/caf/named_shape/E7
tests/caf/named_shape/E8
tests/caf/named_shape/E9
tests/caf/named_shape/F1
tests/caf/named_shape/F2
tests/caf/named_shape/F3
tests/caf/named_shape/F4
tests/caf/named_shape/F5
tests/caf/named_shape/F6
tests/caf/named_shape/F7

index 221a5ad..3cc2eeb 100755 (executable)
@@ -68,9 +68,10 @@ is
 
     Initialize;
      
-    Destroy(me: mutable) is protected;
-    ---C++: alias ~
 ---Category: virtual methods
+    Destroy(me: mutable) is virtual protected;
+    ---C++: alias ~
+    
 
     Update(me: mutable; aToDocument: Document from CDM; aReferenceIdentifier: Integer from Standard; aModifContext: Address from Standard)
     ---Purpose: The Update  method  will be called  once  for each
index dacd083..593fde7 100755 (executable)
@@ -297,8 +297,11 @@ static Standard_Integer DDocStd_Close (Draw_Interpretor& di,
     Handle(TDocStd_Application) A;
     if (!DDocStd::Find(A)) return 1;
     A->Close(D); 
+
     Handle(Draw_Drawable3D) DD = Draw::Get(a[1],Standard_False);
     dout.RemoveDrawable (DD);
+    Handle(Draw_Drawable3D) aDNull;
+    Draw::Set(a[1], aDNull);
     return 0;
   }
   di << "DDocStd_Close : Error" << "\n";
index b10bdce..938f67c 100755 (executable)
@@ -49,9 +49,9 @@ uses Data           from TDF,
 
 is
    
-    --Destroy (me : mutable);
-    ---Purpose: Will Abort any execution, and commit the Undo transaction
-    -----C++: alias ~
+    Destroy (me : mutable) is redefined protected;
+    ---Purpose: Will Abort any execution, clear fields
+    ---C++: alias ~
 
     Get (myclass; L : Label from TDF)
        ---Purpose: returns the    document which contains <L>.  raises  an
index df85eaf..2c14162 100755 (executable)
@@ -74,10 +74,17 @@ Handle(TDocStd_Document) TDocStd_Document::Get (const TDF_Label& acces)
 //function : Destroy
 //purpose  : 
 //=======================================================================
-// void TDocStd_Document::Destroy()
-// {
-//   myUndoTransaction.Commit(); // no needs to store the Undo
-// }
+void TDocStd_Document::Destroy()
+{
+  SetModificationMode(Standard_False);
+  myData->Root().ForgetAllAttributes(Standard_True);
+  myUndoTransaction.Abort();
+  if(!myUndoFILO.IsEmpty())
+    myUndoFILO.Clear();
+  ClearUndos();
+  myData.Nullify();
+  
+}
 
 
 //=======================================================================
index 8ee7d9f..e254c54 100755 (executable)
@@ -135,7 +135,7 @@ is
     GetCollectorFromContext returns Viewer from V3d;
 
     GetAISContext returns InteractiveContext from AIS;
-
+       ---C++: return const &
     GetNISContext returns InteractiveContext from NIS;
     ---C++: return &
 
@@ -144,7 +144,8 @@ is
     SetNISContext (aContext: InteractiveContext from NIS);
 
     CurrentView returns View from V3d;
-
+       ---C++: return const &
+       
     CurrentView (aViou:View from V3d);
 
     Clear ;
index f3146c6..0efa670 100755 (executable)
@@ -334,17 +334,19 @@ static void VwrTst_InitEventMgr(const Handle(NIS_View)& aView,
   theEventMgrs.Prepend(new ViewerTest_EventManager(aView, Ctx));
 }
 
-static Handle(V3d_View)&  a3DView(){
+static Handle(V3d_View)&  a3DView()
+{
   static Handle(V3d_View) Viou;
   return Viou;
 }
 
+
 Standard_EXPORT Handle(AIS_InteractiveContext)& TheAISContext(){
   static Handle(AIS_InteractiveContext) aContext;
   return aContext;
 }
 
-Handle(V3d_View) ViewerTest::CurrentView()
+const Handle(V3d_View)& ViewerTest::CurrentView()
 {
   return a3DView();
 }
@@ -363,7 +365,7 @@ Standard_EXPORT const Handle(NIS_InteractiveContext)& TheNISContext()
   return aContext;
 }
 
-Handle(AIS_InteractiveContext) ViewerTest::GetAISContext()
+const Handle(AIS_InteractiveContext)& ViewerTest::GetAISContext()
 {
   return TheAISContext();
 }
index 6e72af0..4ca3a4d 100755 (executable)
@@ -21,7 +21,7 @@ for {set i 1} {$i < 10} {incr i} {
 
     # close document
     Close D
-    unset D
+   
 
     # unload shape (replace by small one)
     vertex a 0 0 0
index b00ffce..b7b9866 100755 (executable)
@@ -39,7 +39,7 @@ set aFile ${imagedir}/caf001-G3.std
 file delete ${aFile}
 SaveAs D ${aFile}
 if { ![file exists ${aFile}] } {
-       puts "There is not ${aFile} file; SaveAs command: Error"
+       puts "There is no file ${aFile}; SaveAs command: Error"
        return
 }
 #catch {exec chmod 777 ${aFile}}
index 5843509..e5fd637 100755 (executable)
@@ -64,6 +64,7 @@ if { ${IsDone} != 0 } {
        puts "Get a value of TPrsStd_AISPresentation attribute from restoring document: Error"
        puts "OCC1228: ERROR (case 2)"
 } else {
+        Close DDoc
        puts "There is the box in the viewer"
        puts "OCC1228: OK"
 }
index d7f0810..c36b93e 100644 (file)
@@ -18,7 +18,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 #1 - create box using more flexible set of commands
index 568e0bc..30691cd 100644 (file)
@@ -18,7 +18,7 @@
 #pload FULL
 erase
 Close D
-unset D
+
 NewDocument D MDTV-Standard
 
 #Drivers' nick-names:
index eebcb62..c752b15 100644 (file)
@@ -17,7 +17,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 
 AddDriver D Box Cyl Sph Attach XAttach PTxyz PTALine PRLine PMirr Cut Fuse Prism FulRevol SecRevol Fillet
index 167957c..ee82d1a 100644 (file)
@@ -17,7 +17,7 @@
 
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 
 AddDriver D Box Cyl Sph Attach XAttach PTxyz PTALine PRLine PMirr Cut Fuse Prism FulRevol SecRevol Fillet
index 7ac47bb..62b506a 100644 (file)
@@ -17,7 +17,7 @@
 
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 
 AddDriver D Box Cyl Sph Attach XAttach PTxyz PTALine PRLine PMirr Cut Fuse Prism FulRevol SecRevol Fillet
index c1eac67..ec81f89 100644 (file)
@@ -21,7 +21,7 @@
 
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 
 #1 - create Box using short-cut
index 7eb3d56..7a0e2ac 100644 (file)
@@ -21,7 +21,7 @@
 #pload FULL
 erase
 Close D
-unset D
+
 NewDocument D MDTV-Standard
 
 #Drivers' nick-names:
index a88dea0..a8d6864 100644 (file)
@@ -19,7 +19,7 @@
 #pload FULL
 erase
 Close D
-unset D
+
 NewDocument D MDTV-Standard
 
 #Drivers' nick-names:
index c1b9e5f..1223e9d 100644 (file)
@@ -18,7 +18,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 
index f7ae353..aced514 100644 (file)
@@ -22,7 +22,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 AddDriver D Box Cyl Sph Attach XAttach PTxyz PTALine PRLine PMirr Cut Fuse Prism FulRevol SecRevol Fillet
 
index b71c865..d38957a 100644 (file)
@@ -19,7 +19,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 #1 - create Box using short-cut
index b0f2f30..74733f9 100644 (file)
@@ -25,7 +25,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 #1 - create Box using short-cut
index c3c7e88..8f39e59 100644 (file)
@@ -17,7 +17,7 @@
 #pload FULL
 erase
 Close D
-unset D
+
 NewDocument D MDTV-Standard
 
 #Drivers' nick-names:
index 49b9a16..347a550 100644 (file)
@@ -20,7 +20,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 
index c51d62f..d906bb6 100755 (executable)
@@ -22,7 +22,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12
 
index 5949f8d..cbbb723 100644 (file)
@@ -21,7 +21,7 @@
 #pload FULL
 erase 
 Close D 
-unset D
+
 NewDocument D MDTV-Standard
 isos 12