diff --git a/invesalius/data/mask.py b/invesalius/data/mask.py index 3f918a0..ffc841a 100644 --- a/invesalius/data/mask.py +++ b/invesalius/data/mask.py @@ -17,11 +17,14 @@ # detalhes. #-------------------------------------------------------------------------- +import os +import plistlib import random + +import vtk + import constants as const import imagedata_utils as iu -import plistlib -import vtk class Mask(): general_index = -1 @@ -48,7 +51,18 @@ class Mask(): mask[key] = {'$vti': img_name} else: mask[key] = d[key] - - print mask plistlib.writePlist(mask, filename + '.plist') - return filename + return filename + '.plist' + + def OpenPList(self, filename): + mask = plistlib.readPlist(filename) + dirpath = os.path.split(filename)[0] + for key in mask: + if key == 'imagedata': + filepath = os.path.split(mask[key]["$vti"])[-1] + path = os.path.join(dirpath, filepath) + self.imagedata = iu.Import(path) + else: + setattr(self, key, mask[key]) + + diff --git a/invesalius/data/surface.py b/invesalius/data/surface.py index 4512ed7..80f03c6 100644 --- a/invesalius/data/surface.py +++ b/invesalius/data/surface.py @@ -16,7 +16,10 @@ # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais # detalhes. #-------------------------------------------------------------------------- + +import os import plistlib + import vtk import wx.lib.pubsub as ps @@ -54,7 +57,21 @@ class Surface(): else: surface[key] = d[key] plistlib.writePlist(surface, filename + '.plist') - return filename + return filename + '.plist' + + def OpenPList(self, filename): + surface = plistlib.readPlist(filename) + dirpath = os.path.split(filename)[0] + for key in surface: + if key == 'polydata': + filepath = os.path.split(surface[key]["$vtp"])[-1] + path = os.path.join(dirpath, filepath) + self.polydata = pu.Import(path) + else: + setattr(self, key, surface[key]) + + + # TODO: will be initialized inside control as it is being done? class SurfaceManager(): diff --git a/invesalius/project.py b/invesalius/project.py index f8a5e7e..9dd96c8 100755 --- a/invesalius/project.py +++ b/invesalius/project.py @@ -29,7 +29,9 @@ import wx.lib.pubsub as ps import vtk import data.imagedata_utils as iu +import data.mask as msk import data.polydata_utils as pu +import data.surface as srf from presets import Presets from utils import Singleton import version @@ -138,7 +140,7 @@ class Project(object): for key in self.__dict__: if getattr(self.__dict__[key], 'SavePlist', None): - project[key] = {'$plist': self.__dict__[key].SavePlist(filename)} + project[key] = {'#plist': self.__dict__[key].SavePlist(filename)} else: project[key] = self.__dict__[key] @@ -173,9 +175,41 @@ class Project(object): print "antes", self.__dict__ + # Path were extracted project is + dirpath = os.path.split(filelist[0])[0] + print "* dirpath", dirpath + for key in project: - setattr(self, key, project[key]) + if key == 'imagedata': + filepath = os.path.split(project[key]["$vti"])[-1] + path = os.path.join(dirpath, filepath) + self.imagedata = iu.Import(path) + elif key == 'presets': + filepath = os.path.split(project[key]["#plist"])[-1] + path = os.path.join(dirpath, filepath) + preset = Presets() + preset.OpenPlist(path) + self.presets = preset + elif key == 'mask_dict': + self.mask_dict = {} + for mask in project[key]: + filepath = os.path.split(project[key][mask]["#mask"])[-1] + path = os.path.join(dirpath, filepath) + m = msk.Mask() + m.OpenPList(path) + self.mask_dict[m.index] = m + elif key == 'surface_dict': + self.surface_dict = {} + for surface in project[key]: + filepath = os.path.split(project[key][surface]["#surface"])[-1] + path = os.path.join(dirpath, filepath) + s = srf.Surface() + s.OpenPList(path) + self.surface_dict[s.index] = s + else: + setattr(self, key, project[key]) print "depois", self.__dict__ + #masks = project['masks'] #for index in masks: # self.mask_dict[index] = masks[index] @@ -184,10 +218,6 @@ class Project(object): #for index in surfaces: # self.surface_dict[index] = surfaces[index] - #self.min_threshold = project['min threshold'] - #self.max_threshold = project['max threshold'] - #self.window = project['window'] - #self.level = project['level'] def Compress(folder, filename): file_list = glob.glob(os.path.join(folder,"*")) -- libgit2 0.21.2