Commit 06a07287aafe3ce3e2bc9ab45592c6c316699dd2
1 parent
2594556f
Exists in
master
and in
6 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,"*")) | ... | ... |