diff --git a/blender_cloud/blender.py b/blender_cloud/blender.py index a303314..0cbbe10 100644 --- a/blender_cloud/blender.py +++ b/blender_cloud/blender.py @@ -23,6 +23,11 @@ class BlenderCloudPreferences(AddonPreferences): default='https://pillar.blender.org:5000/' ) + local_texture_dir = StringProperty( + name='Default Blender Cloud texture storage directory', + subtype='DIR_PATH', + default='//textures') + def draw(self, context): layout = self.layout @@ -53,6 +58,11 @@ class BlenderCloudPreferences(AddonPreferences): sub.label(text=blender_id_text, icon=blender_id_icon) sub.label(text="* " + blender_id_help) + sub = layout.column() + sub.label(text='Local directory for downloaded textures') + sub.prop(self, "local_texture_dir", text='Default') + sub.prop(context.scene, "local_texture_dir", text='Current scene') + # options for Pillar sub = layout.column() sub.enabled = blender_id_icon != 'ERROR' @@ -111,10 +121,19 @@ def register(): name="Blender Cloud node UUID", default='') # empty == top-level of project - Scene.blender_cloud_dir = StringProperty( - name='Blender Cloud texture storage directory', + addon_prefs = preferences() + + def default_if_empty(scene, context): + """The scene's local_texture_dir, if empty, reverts to the addon prefs.""" + + if not scene.local_texture_dir: + scene.local_texture_dir = addon_prefs.local_texture_dir + + Scene.local_texture_dir = StringProperty( + name='Blender Cloud texture storage directory for current scene', subtype='DIR_PATH', - default='//textures') + default=addon_prefs.local_texture_dir, + update=default_if_empty) def unregister(): diff --git a/blender_cloud/gui.py b/blender_cloud/gui.py index b93e2fe..b6f2ee6 100644 --- a/blender_cloud/gui.py +++ b/blender_cloud/gui.py @@ -600,7 +600,7 @@ class BlenderCloudBrowser(bpy.types.Operator): node_path_components = [node['name'] for node in self.path_stack if node is not None] local_path_components = [self.project_uuid] + node_path_components + [self.node['name']] - top_texture_directory = bpy.path.abspath(context.scene.blender_cloud_dir) + top_texture_directory = bpy.path.abspath(context.scene.local_texture_dir) local_path = os.path.join(top_texture_directory, *local_path_components) meta_path = os.path.join(top_texture_directory, '.blender_cloud')