Commit 06a07287aafe3ce3e2bc9ab45592c6c316699dd2
1 parent
2594556f
Exists in
master
and in
68 other branches
ENH: Open inv3 project working (under devel - still need to load stuff into GUI)
Showing
3 changed files
with
73 additions
and
12 deletions
Show diff stats
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,"*")) | ... | ... |