Commit 06a07287aafe3ce3e2bc9ab45592c6c316699dd2

Authored by tatiana
1 parent 2594556f

ENH: Open inv3 project working (under devel - still need to load stuff into GUI)

invesalius/data/mask.py
... ... @@ -17,11 +17,14 @@
17 17 # detalhes.
18 18 #--------------------------------------------------------------------------
19 19  
  20 +import os
  21 +import plistlib
20 22 import random
  23 +
  24 +import vtk
  25 +
21 26 import constants as const
22 27 import imagedata_utils as iu
23   -import plistlib
24   -import vtk
25 28  
26 29 class Mask():
27 30 general_index = -1
... ... @@ -48,7 +51,18 @@ class Mask():
48 51 mask[key] = {'$vti': img_name}
49 52 else:
50 53 mask[key] = d[key]
51   -
52   - print mask
53 54 plistlib.writePlist(mask, filename + '.plist')
54   - return filename
  55 + return filename + '.plist'
  56 +
  57 + def OpenPList(self, filename):
  58 + mask = plistlib.readPlist(filename)
  59 + dirpath = os.path.split(filename)[0]
  60 + for key in mask:
  61 + if key == 'imagedata':
  62 + filepath = os.path.split(mask[key]["$vti"])[-1]
  63 + path = os.path.join(dirpath, filepath)
  64 + self.imagedata = iu.Import(path)
  65 + else:
  66 + setattr(self, key, mask[key])
  67 +
  68 +
... ...
invesalius/data/surface.py
... ... @@ -16,7 +16,10 @@
16 16 # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais
17 17 # detalhes.
18 18 #--------------------------------------------------------------------------
  19 +
  20 +import os
19 21 import plistlib
  22 +
20 23 import vtk
21 24 import wx.lib.pubsub as ps
22 25  
... ... @@ -54,7 +57,21 @@ class Surface():
54 57 else:
55 58 surface[key] = d[key]
56 59 plistlib.writePlist(surface, filename + '.plist')
57   - return filename
  60 + return filename + '.plist'
  61 +
  62 + def OpenPList(self, filename):
  63 + surface = plistlib.readPlist(filename)
  64 + dirpath = os.path.split(filename)[0]
  65 + for key in surface:
  66 + if key == 'polydata':
  67 + filepath = os.path.split(surface[key]["$vtp"])[-1]
  68 + path = os.path.join(dirpath, filepath)
  69 + self.polydata = pu.Import(path)
  70 + else:
  71 + setattr(self, key, surface[key])
  72 +
  73 +
  74 +
58 75  
59 76 # TODO: will be initialized inside control as it is being done?
60 77 class SurfaceManager():
... ...
invesalius/project.py
... ... @@ -29,7 +29,9 @@ import wx.lib.pubsub as ps
29 29 import vtk
30 30  
31 31 import data.imagedata_utils as iu
  32 +import data.mask as msk
32 33 import data.polydata_utils as pu
  34 +import data.surface as srf
33 35 from presets import Presets
34 36 from utils import Singleton
35 37 import version
... ... @@ -138,7 +140,7 @@ class Project(object):
138 140  
139 141 for key in self.__dict__:
140 142 if getattr(self.__dict__[key], 'SavePlist', None):
141   - project[key] = {'$plist': self.__dict__[key].SavePlist(filename)}
  143 + project[key] = {'#plist': self.__dict__[key].SavePlist(filename)}
142 144 else:
143 145 project[key] = self.__dict__[key]
144 146  
... ... @@ -173,9 +175,41 @@ class Project(object):
173 175  
174 176 print "antes", self.__dict__
175 177  
  178 + # Path were extracted project is
  179 + dirpath = os.path.split(filelist[0])[0]
  180 + print "* dirpath", dirpath
  181 +
176 182 for key in project:
177   - setattr(self, key, project[key])
  183 + if key == 'imagedata':
  184 + filepath = os.path.split(project[key]["$vti"])[-1]
  185 + path = os.path.join(dirpath, filepath)
  186 + self.imagedata = iu.Import(path)
  187 + elif key == 'presets':
  188 + filepath = os.path.split(project[key]["#plist"])[-1]
  189 + path = os.path.join(dirpath, filepath)
  190 + preset = Presets()
  191 + preset.OpenPlist(path)
  192 + self.presets = preset
  193 + elif key == 'mask_dict':
  194 + self.mask_dict = {}
  195 + for mask in project[key]:
  196 + filepath = os.path.split(project[key][mask]["#mask"])[-1]
  197 + path = os.path.join(dirpath, filepath)
  198 + m = msk.Mask()
  199 + m.OpenPList(path)
  200 + self.mask_dict[m.index] = m
  201 + elif key == 'surface_dict':
  202 + self.surface_dict = {}
  203 + for surface in project[key]:
  204 + filepath = os.path.split(project[key][surface]["#surface"])[-1]
  205 + path = os.path.join(dirpath, filepath)
  206 + s = srf.Surface()
  207 + s.OpenPList(path)
  208 + self.surface_dict[s.index] = s
  209 + else:
  210 + setattr(self, key, project[key])
178 211 print "depois", self.__dict__
  212 +
179 213 #masks = project['masks']
180 214 #for index in masks:
181 215 # self.mask_dict[index] = masks[index]
... ... @@ -184,10 +218,6 @@ class Project(object):
184 218 #for index in surfaces:
185 219 # self.surface_dict[index] = surfaces[index]
186 220  
187   - #self.min_threshold = project['min threshold']
188   - #self.max_threshold = project['max threshold']
189   - #self.window = project['window']
190   - #self.level = project['level']
191 221  
192 222 def Compress(folder, filename):
193 223 file_list = glob.glob(os.path.join(folder,"*"))
... ...