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,11 +17,14 @@
17 # detalhes. 17 # detalhes.
18 #-------------------------------------------------------------------------- 18 #--------------------------------------------------------------------------
19 19
  20 +import os
  21 +import plistlib
20 import random 22 import random
  23 +
  24 +import vtk
  25 +
21 import constants as const 26 import constants as const
22 import imagedata_utils as iu 27 import imagedata_utils as iu
23 -import plistlib  
24 -import vtk  
25 28
26 class Mask(): 29 class Mask():
27 general_index = -1 30 general_index = -1
@@ -48,7 +51,18 @@ class Mask(): @@ -48,7 +51,18 @@ class Mask():
48 mask[key] = {'$vti': img_name} 51 mask[key] = {'$vti': img_name}
49 else: 52 else:
50 mask[key] = d[key] 53 mask[key] = d[key]
51 -  
52 - print mask  
53 plistlib.writePlist(mask, filename + '.plist') 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,7 +16,10 @@
16 # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais 16 # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais
17 # detalhes. 17 # detalhes.
18 #-------------------------------------------------------------------------- 18 #--------------------------------------------------------------------------
  19 +
  20 +import os
19 import plistlib 21 import plistlib
  22 +
20 import vtk 23 import vtk
21 import wx.lib.pubsub as ps 24 import wx.lib.pubsub as ps
22 25
@@ -54,7 +57,21 @@ class Surface(): @@ -54,7 +57,21 @@ class Surface():
54 else: 57 else:
55 surface[key] = d[key] 58 surface[key] = d[key]
56 plistlib.writePlist(surface, filename + '.plist') 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 # TODO: will be initialized inside control as it is being done? 76 # TODO: will be initialized inside control as it is being done?
60 class SurfaceManager(): 77 class SurfaceManager():
invesalius/project.py
@@ -29,7 +29,9 @@ import wx.lib.pubsub as ps @@ -29,7 +29,9 @@ import wx.lib.pubsub as ps
29 import vtk 29 import vtk
30 30
31 import data.imagedata_utils as iu 31 import data.imagedata_utils as iu
  32 +import data.mask as msk
32 import data.polydata_utils as pu 33 import data.polydata_utils as pu
  34 +import data.surface as srf
33 from presets import Presets 35 from presets import Presets
34 from utils import Singleton 36 from utils import Singleton
35 import version 37 import version
@@ -138,7 +140,7 @@ class Project(object): @@ -138,7 +140,7 @@ class Project(object):
138 140
139 for key in self.__dict__: 141 for key in self.__dict__:
140 if getattr(self.__dict__[key], 'SavePlist', None): 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 else: 144 else:
143 project[key] = self.__dict__[key] 145 project[key] = self.__dict__[key]
144 146
@@ -173,9 +175,41 @@ class Project(object): @@ -173,9 +175,41 @@ class Project(object):
173 175
174 print "antes", self.__dict__ 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 for key in project: 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 print "depois", self.__dict__ 211 print "depois", self.__dict__
  212 +
179 #masks = project['masks'] 213 #masks = project['masks']
180 #for index in masks: 214 #for index in masks:
181 # self.mask_dict[index] = masks[index] 215 # self.mask_dict[index] = masks[index]
@@ -184,10 +218,6 @@ class Project(object): @@ -184,10 +218,6 @@ class Project(object):
184 #for index in surfaces: 218 #for index in surfaces:
185 # self.surface_dict[index] = surfaces[index] 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 def Compress(folder, filename): 222 def Compress(folder, filename):
193 file_list = glob.glob(os.path.join(folder,"*")) 223 file_list = glob.glob(os.path.join(folder,"*"))