From 38e0537e439b168d0f41e9f5557bb6535e4e8f0b Mon Sep 17 00:00:00 2001
From: juergen <juergen@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Thu, 22 Apr 2010 18:58:29 +0000
Subject: [PATCH] adding missing implementation for pdb writer flags

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2108 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 modules/io/pymod/__init__.py | 48 ++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 21 deletions(-)

diff --git a/modules/io/pymod/__init__.py b/modules/io/pymod/__init__.py
index 996ff1ffc..e92e93249 100644
--- a/modules/io/pymod/__init__.py
+++ b/modules/io/pymod/__init__.py
@@ -20,27 +20,27 @@ from _io import *
 from ost import mol,conop
 
 def LoadPDB(filename, restrict_chains="", no_hetatms=False,
-            fault_tolerant=False, load_multi=False, 
+            fault_tolerant=False, load_multi=False,
             join_spread_atom_records=False):
   """
   Load PDB file from disk.
-  
+
   If restrict_chains is not an empty string, only chains listed in the
-  string will be imported. 
-  
+  string will be imported.
+
   If fault_tolerant is set to true, the import will succeed, even if the
   PDB contains faulty records. The faulty records will be ignored in that
   case.
-  
+
   If not_hetatms is set to True, HETATM records will be ignored
-  
+
   If load_multi is set to true, a list of entities will be returned instead
   of only the first.
-  
-  If join_spread_atom_records is set to true, atom records belonging to the 
+
+  If join_spread_atom_records is set to true, atom records belonging to the
   same residue are joined, even if they do not appear sequentially in the PDB
   file.
-  """          
+  """
   conop_inst=conop.Conopology.Instance()
   builder=conop_inst.GetBuilder("DEFAULT")
   reader=PDBReader(filename)
@@ -64,7 +64,7 @@ def LoadPDB(filename, restrict_chains="", no_hetatms=False,
       PDB.PopFlags()
       return ent_list
     else:
-      ent=mol.CreateEntity()    
+      ent=mol.CreateEntity()
       if reader.HasNext():
         reader.Import(ent, restrict_chains)
         conop_inst.ConnectAll(builder, ent, 0)
@@ -81,18 +81,24 @@ def SavePDB(models, filename):
   if not getattr(models, '__len__', None):
     models=[models]
   writer=PDBWriter(filename)
-  if len(models)>1:
-    writer.SetFlags(PDB.WRITE_MULTIPLE_MODELS)
-  for model in models:
-    writer.Write(model)
-
+  try:
+    if len(models)>1:
+      PDB.PushFlags(PDB.Flags() |PDB.WRITE_MULTIPLE_MODELS)
+    else:
+      PDB.PushFlags(0)
+    for model in models:
+      writer.Write(model)
+    PDB.PopFlags()
+  except:
+    PDB.PopFlags()
+    raise
 try:
   from ost import img
   LoadMap = LoadImage
-  SaveMap = SaveImage  
+  SaveMap = SaveImage
 except ImportError:
   pass
- 
+
  ## loads several images and puts them in an ImageList
  # \sa \ref fft_li.py "View Fourier Transform Example"
 def LoadImageList (files):
@@ -100,14 +106,14 @@ def LoadImageList (files):
   for file in files:
     image=LoadImage(file)
     image_list.append(image)
-  return image_list  
-      
+  return image_list
+
 LoadMapList=LoadImageList
 
 ## \example fft_li.py
 #
-# This scripts loads one or more images and shows their Fourier Transforms on the screen. A viewer 
-# is opened for each loaded image. The Fourier Transform honors the origin of the reference system, 
+# This scripts loads one or more images and shows their Fourier Transforms on the screen. A viewer
+# is opened for each loaded image. The Fourier Transform honors the origin of the reference system,
 # which is assumed to be at the center of the image.
 #
 # Usage:
-- 
GitLab