diff --git a/invesalius/constants.py b/invesalius/constants.py index 8d8ebe1..78ceb8e 100644 --- a/invesalius/constants.py +++ b/invesalius/constants.py @@ -165,13 +165,18 @@ REDUCE_IMAGEDATA_QUALITY = 1 # if 1, use vtkVolumeRaycastMapper, if 0, use vtkFixedPointVolumeRayCastMapper -TYPE_RAYCASTING_MAPPER = 0 +TYPE_RAYCASTING_MAPPER = 1 folder=RAYCASTING_PRESETS_DIRECTORY= os.path.join("..", "presets", "raycasting") RAYCASTING_TYPES = [filename.split(".")[0] for filename in os.listdir(folder) if os.path.isfile(os.path.join(folder,filename))] +folder = os.path.join(os.path.expanduser('~'), '.invesalius', 'presets') +USER_RAYCASTING_PRESETS_DIRECTORY = folder +RAYCASTING_TYPES += [filename.split(".")[0] for filename in + os.listdir(folder) if + os.path.isfile(os.path.join(folder,filename))] RAYCASTING_TYPES.append(' Off') RAYCASTING_TYPES.sort() RAYCASTING_OFF_LABEL = ' Off' diff --git a/invesalius/control.py b/invesalius/control.py index f1ef345..6b034dc 100755 --- a/invesalius/control.py +++ b/invesalius/control.py @@ -26,6 +26,8 @@ class Controller(): ps.Publisher().subscribe(self.StartImportPanel, "Load data to import panel") ps.Publisher().subscribe(self.LoadRaycastingPreset, 'Load raycasting preset') + ps.Publisher().subscribe(self.SaveRaycastingPreset, + 'Save raycasting preset') def StartImportPanel(self, pubsub_evt): path = pubsub_evt.data @@ -140,9 +142,14 @@ class Controller(): def LoadRaycastingPreset(self, pubsub_evt): label = pubsub_evt.data if label != const.RAYCASTING_OFF_LABEL: - path = os.path.join(const.RAYCASTING_PRESETS_DIRECTORY, - label+".plist") - preset = plistlib.readPlist(path) + try: + path = os.path.join(const.RAYCASTING_PRESETS_DIRECTORY, + label+".plist") + preset = plistlib.readPlist(path) + except IOError: + path = os.path.join(const.USER_RAYCASTING_PRESETS_DIRECTORY, + label+".plist") + preset = plistlib.readPlist(path) prj.Project().raycasting_preset = preset # Notify volume # TODO: Chamar grafico tb! @@ -150,3 +157,9 @@ class Controller(): else: prj.Project().raycasting_preset = None ps.Publisher().sendMessage("Hide raycasting volume") + + def SaveRaycastingPreset(self, pubsub_evt): + preset_name = pubsub_evt.data + '.plist' + preset = prj.Project().raycasting_preset + preset_dir = os.path.join(const.USER_RAYCASTING_PRESETS_DIRECTORY, preset_name) + plistlib.writePlist(preset, preset_dir) -- libgit2 0.21.2