Commit 82530df3ea908ca553c6668a009c04d6b5ec2e3e

Authored by tfmoraes
1 parent 4bd2679d

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)
... ...