Revision: 36478 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36478 Author: campbellbarton Date: 2011-05-04 08:44:08 +0000 (Wed, 04 May 2011) Log Message: ----------- fix 2 bugs with addon installation - installing an addon which creates a new script directory didn't add this to the sys.path. - installing the addon was meant to set the search string to the addon name but was broken.
Modified Paths: -------------- trunk/blender/release/scripts/modules/bpy/utils.py trunk/blender/release/scripts/startup/bl_ui/space_userpref.py Modified: trunk/blender/release/scripts/modules/bpy/utils.py =================================================================== --- trunk/blender/release/scripts/modules/bpy/utils.py 2011-05-04 06:45:58 UTC (rev 36477) +++ trunk/blender/release/scripts/modules/bpy/utils.py 2011-05-04 08:44:08 UTC (rev 36478) @@ -33,6 +33,7 @@ import addon_utils as _addon_utils +_script_module_dirs = "startup", "modules" def _test_import(module_name, loaded_modules): use_time = _bpy.app.debug @@ -183,7 +184,7 @@ _global_loaded_modules[:] = [] for base_path in script_paths(): - for path_subdir in ("startup", "modules"): + for path_subdir in _script_module_dirs: path = _os.path.join(base_path, path_subdir) if _os.path.isdir(path): _sys_path_ensure(path) @@ -260,7 +261,7 @@ if path not in scripts and _os.path.isdir(path): scripts.append(path) - if not subdir: + if subdir is None: return scripts script_paths = [] @@ -272,6 +273,24 @@ return script_paths +def refresh_script_paths(): + """ + Run this after creating new script paths to update sys.path + """ + + for base_path in script_paths(): + for path_subdir in _script_module_dirs: + path = _os.path.join(base_path, path_subdir) + if _os.path.isdir(path): + _sys_path_ensure(path) + + for path in _addon_utils.paths(): + _sys_path_ensure(path) + path = _os.path.join(path, "modules") + if _os.path.isdir(path): + _sys_path_ensure(path) + + _presets = _os.path.join(_scripts[0], "presets") # FIXME - multiple paths Modified: trunk/blender/release/scripts/startup/bl_ui/space_userpref.py =================================================================== --- trunk/blender/release/scripts/startup/bl_ui/space_userpref.py 2011-05-04 06:45:58 UTC (rev 36477) +++ trunk/blender/release/scripts/startup/bl_ui/space_userpref.py 2011-05-04 08:44:08 UTC (rev 36478) @@ -1106,7 +1106,8 @@ del pyfile_dir # done checking for exceptional case - contents = set(os.listdir(path_addons)) + addon_files_old = set(os.listdir(path_addons)) + addons_old = {mod.__name__ for mod in addon_utils.modules(USERPREF_PT_addons._addons_fake_modules)} #check to see if the file is in compressed format (.zip) if zipfile.is_zipfile(pyfile): @@ -1155,11 +1156,13 @@ traceback.print_exc() return {'CANCELLED'} + addons_new = {mod.__name__ for mod in addon_utils.modules(USERPREF_PT_addons._addons_fake_modules)} - addons_old + addons_new.discard("modules") + # disable any addons we may have enabled previously and removed. # this is unlikely but do just incase. bug [#23978] - addons_new = set(os.listdir(path_addons)) - contents for new_addon in addons_new: - addon_utils.disable(os.path.splitext(new_addon)[0]) + addon_utils.disable(new_addon) # possible the zip contains multiple addons, we could disallow this # but for now just use the first @@ -1172,6 +1175,9 @@ context.window_manager.addon_search = info["name"] break + # incase a new module path was created to install this addon. + bpy.utils.refresh_script_paths() + # TODO, should not be a warning. # self.report({'WARNING'}, "File installed to '%s'\n" % path_dest) return {'FINISHED'} _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs