Commit 82530df3ea908ca553c6668a009c04d6b5ec2e3e
1 parent
4bd2679d
Exists in
master
and in
68 other branches
ADD: a method to save the raycasting presets
Showing
2 changed files
with
22 additions
and
4 deletions
Show diff stats
invesalius/constants.py
... | ... | @@ -165,13 +165,18 @@ REDUCE_IMAGEDATA_QUALITY = 1 |
165 | 165 | |
166 | 166 | |
167 | 167 | # if 1, use vtkVolumeRaycastMapper, if 0, use vtkFixedPointVolumeRayCastMapper |
168 | -TYPE_RAYCASTING_MAPPER = 0 | |
168 | +TYPE_RAYCASTING_MAPPER = 1 | |
169 | 169 | |
170 | 170 | folder=RAYCASTING_PRESETS_DIRECTORY= os.path.join("..", "presets", "raycasting") |
171 | 171 | |
172 | 172 | RAYCASTING_TYPES = [filename.split(".")[0] for filename in |
173 | 173 | os.listdir(folder) if |
174 | 174 | os.path.isfile(os.path.join(folder,filename))] |
175 | +folder = os.path.join(os.path.expanduser('~'), '.invesalius', 'presets') | |
176 | +USER_RAYCASTING_PRESETS_DIRECTORY = folder | |
177 | +RAYCASTING_TYPES += [filename.split(".")[0] for filename in | |
178 | + os.listdir(folder) if | |
179 | + os.path.isfile(os.path.join(folder,filename))] | |
175 | 180 | RAYCASTING_TYPES.append(' Off') |
176 | 181 | RAYCASTING_TYPES.sort() |
177 | 182 | RAYCASTING_OFF_LABEL = ' Off' | ... | ... |
invesalius/control.py
... | ... | @@ -26,6 +26,8 @@ class Controller(): |
26 | 26 | ps.Publisher().subscribe(self.StartImportPanel, "Load data to import panel") |
27 | 27 | ps.Publisher().subscribe(self.LoadRaycastingPreset, |
28 | 28 | 'Load raycasting preset') |
29 | + ps.Publisher().subscribe(self.SaveRaycastingPreset, | |
30 | + 'Save raycasting preset') | |
29 | 31 | |
30 | 32 | def StartImportPanel(self, pubsub_evt): |
31 | 33 | path = pubsub_evt.data |
... | ... | @@ -140,9 +142,14 @@ class Controller(): |
140 | 142 | def LoadRaycastingPreset(self, pubsub_evt): |
141 | 143 | label = pubsub_evt.data |
142 | 144 | if label != const.RAYCASTING_OFF_LABEL: |
143 | - path = os.path.join(const.RAYCASTING_PRESETS_DIRECTORY, | |
144 | - label+".plist") | |
145 | - preset = plistlib.readPlist(path) | |
145 | + try: | |
146 | + path = os.path.join(const.RAYCASTING_PRESETS_DIRECTORY, | |
147 | + label+".plist") | |
148 | + preset = plistlib.readPlist(path) | |
149 | + except IOError: | |
150 | + path = os.path.join(const.USER_RAYCASTING_PRESETS_DIRECTORY, | |
151 | + label+".plist") | |
152 | + preset = plistlib.readPlist(path) | |
146 | 153 | prj.Project().raycasting_preset = preset |
147 | 154 | # Notify volume |
148 | 155 | # TODO: Chamar grafico tb! |
... | ... | @@ -150,3 +157,9 @@ class Controller(): |
150 | 157 | else: |
151 | 158 | prj.Project().raycasting_preset = None |
152 | 159 | ps.Publisher().sendMessage("Hide raycasting volume") |
160 | + | |
161 | + def SaveRaycastingPreset(self, pubsub_evt): | |
162 | + preset_name = pubsub_evt.data + '.plist' | |
163 | + preset = prj.Project().raycasting_preset | |
164 | + preset_dir = os.path.join(const.USER_RAYCASTING_PRESETS_DIRECTORY, preset_name) | |
165 | + plistlib.writePlist(preset, preset_dir) | ... | ... |