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,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,"*")) |