Commit 82530df3ea908ca553c6668a009c04d6b5ec2e3e
1 parent
4bd2679d
Exists in
master
and in
6 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,13 +165,18 @@ REDUCE_IMAGEDATA_QUALITY = 1 | ||
165 | 165 | ||
166 | 166 | ||
167 | # if 1, use vtkVolumeRaycastMapper, if 0, use vtkFixedPointVolumeRayCastMapper | 167 | # if 1, use vtkVolumeRaycastMapper, if 0, use vtkFixedPointVolumeRayCastMapper |
168 | -TYPE_RAYCASTING_MAPPER = 0 | 168 | +TYPE_RAYCASTING_MAPPER = 1 |
169 | 169 | ||
170 | folder=RAYCASTING_PRESETS_DIRECTORY= os.path.join("..", "presets", "raycasting") | 170 | folder=RAYCASTING_PRESETS_DIRECTORY= os.path.join("..", "presets", "raycasting") |
171 | 171 | ||
172 | RAYCASTING_TYPES = [filename.split(".")[0] for filename in | 172 | RAYCASTING_TYPES = [filename.split(".")[0] for filename in |
173 | os.listdir(folder) if | 173 | os.listdir(folder) if |
174 | os.path.isfile(os.path.join(folder,filename))] | 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 | RAYCASTING_TYPES.append(' Off') | 180 | RAYCASTING_TYPES.append(' Off') |
176 | RAYCASTING_TYPES.sort() | 181 | RAYCASTING_TYPES.sort() |
177 | RAYCASTING_OFF_LABEL = ' Off' | 182 | RAYCASTING_OFF_LABEL = ' Off' |
invesalius/control.py
@@ -26,6 +26,8 @@ class Controller(): | @@ -26,6 +26,8 @@ class Controller(): | ||
26 | ps.Publisher().subscribe(self.StartImportPanel, "Load data to import panel") | 26 | ps.Publisher().subscribe(self.StartImportPanel, "Load data to import panel") |
27 | ps.Publisher().subscribe(self.LoadRaycastingPreset, | 27 | ps.Publisher().subscribe(self.LoadRaycastingPreset, |
28 | 'Load raycasting preset') | 28 | 'Load raycasting preset') |
29 | + ps.Publisher().subscribe(self.SaveRaycastingPreset, | ||
30 | + 'Save raycasting preset') | ||
29 | 31 | ||
30 | def StartImportPanel(self, pubsub_evt): | 32 | def StartImportPanel(self, pubsub_evt): |
31 | path = pubsub_evt.data | 33 | path = pubsub_evt.data |
@@ -140,9 +142,14 @@ class Controller(): | @@ -140,9 +142,14 @@ class Controller(): | ||
140 | def LoadRaycastingPreset(self, pubsub_evt): | 142 | def LoadRaycastingPreset(self, pubsub_evt): |
141 | label = pubsub_evt.data | 143 | label = pubsub_evt.data |
142 | if label != const.RAYCASTING_OFF_LABEL: | 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 | prj.Project().raycasting_preset = preset | 153 | prj.Project().raycasting_preset = preset |
147 | # Notify volume | 154 | # Notify volume |
148 | # TODO: Chamar grafico tb! | 155 | # TODO: Chamar grafico tb! |
@@ -150,3 +157,9 @@ class Controller(): | @@ -150,3 +157,9 @@ class Controller(): | ||
150 | else: | 157 | else: |
151 | prj.Project().raycasting_preset = None | 158 | prj.Project().raycasting_preset = None |
152 | ps.Publisher().sendMessage("Hide raycasting volume") | 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) |