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