minor edits to recent fix for addons

This commit is contained in:
Campbell Barton 2011-09-23 13:47:29 +00:00
parent f7c8ea702f
commit c658b74db5
4 changed files with 23 additions and 16 deletions

@ -33,11 +33,7 @@ import bpy as _bpy
error_duplicates = False
error_encoding = False
_addons_fake_modules = {}
def module_get(mod_name):
return _addons_fake_modules[mod_name]
addons_fake_modules = {}
def paths():

@ -26,9 +26,6 @@ from bpy.props import (StringProperty,
FloatProperty,
EnumProperty,
)
import addon_utils
import os
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
@ -758,6 +755,7 @@ class WM_OT_path_open(Operator):
def execute(self, context):
import sys
import os
import subprocess
filepath = bpy.path.abspath(self.filepath)
@ -1102,6 +1100,7 @@ class WM_OT_appconfig_default(Operator):
bl_label = "Default Application Configuration"
def execute(self, context):
import os
context.window_manager.keyconfigs.active = context.window_manager.keyconfigs.default
@ -1123,6 +1122,7 @@ class WM_OT_appconfig_activate(Operator):
)
def execute(self, context):
import os
bpy.utils.keyconfig_set(self.filepath)
filepath = self.filepath.replace("keyconfig", "interaction")
@ -1150,6 +1150,7 @@ class WM_OT_copy_prev_settings(Operator):
bl_label = "Copy Previous Settings"
def execute(self, context):
import os
import shutil
ver = bpy.app.version
ver_old = ((ver[0] * 100) + ver[1]) - 1
@ -1608,6 +1609,8 @@ class WM_OT_addon_enable(Operator):
)
def execute(self, context):
import addon_utils
mod = addon_utils.enable(self.module)
if mod:
@ -1637,6 +1640,8 @@ class WM_OT_addon_disable(Operator):
)
def execute(self, context):
import addon_utils
addon_utils.disable(self.module)
return {'FINISHED'}
@ -1690,6 +1695,7 @@ class WM_OT_addon_install(Operator):
os.remove(f_full)
def execute(self, context):
import addon_utils
import traceback
import zipfile
import shutil
@ -1725,7 +1731,7 @@ class WM_OT_addon_install(Operator):
del pyfile_dir
# done checking for exceptional case
addons_old = {mod.__name__ for mod in addon_utils.modules(addon_utils._addons_fake_modules)}
addons_old = {mod.__name__ for mod in addon_utils.modules(addon_utils.addons_fake_modules)}
#check to see if the file is in compressed format (.zip)
if zipfile.is_zipfile(pyfile):
@ -1774,7 +1780,7 @@ class WM_OT_addon_install(Operator):
traceback.print_exc()
return {'CANCELLED'}
addons_new = {mod.__name__ for mod in addon_utils.modules(addon_utils._addons_fake_modules)} - addons_old
addons_new = {mod.__name__ for mod in addon_utils.modules(addon_utils.addons_fake_modules)} - addons_old
addons_new.discard("modules")
# disable any addons we may have enabled previously and removed.
@ -1784,7 +1790,7 @@ class WM_OT_addon_install(Operator):
# possible the zip contains multiple addons, we could disallow this
# but for now just use the first
for mod in addon_utils.modules(addon_utils._addons_fake_modules):
for mod in addon_utils.modules(addon_utils.addons_fake_modules):
if mod.__name__ in addons_new:
info = addon_utils.module_bl_info(mod)
@ -1818,7 +1824,9 @@ class WM_OT_addon_remove(Operator):
@staticmethod
def path_from_addon(module):
for mod in addon_utils.modules(addon_utils._addons_fake_modules):
import addon_utils
for mod in addon_utils.modules(addon_utils.addons_fake_modules):
if mod.__name__ == module:
filepath = mod.__file__
if os.path.exists(filepath):
@ -1829,6 +1837,8 @@ class WM_OT_addon_remove(Operator):
return None, False
def execute(self, context):
import addon_utils
path, isdir = WM_OT_addon_remove.path_from_addon(self.module)
if path is None:
self.report('WARNING', "Addon path %r could not be found" % path)
@ -1868,12 +1878,14 @@ class WM_OT_addon_expand(Operator):
)
def execute(self, context):
import addon_utils
module_name = self.module
# unlikely to fail, module should have already been imported
try:
# mod = __import__(module_name)
mod = addon_utils.module_get(module_name)
mod = addon_utils.addons_fake_modules.get(module_name)
except:
import traceback
traceback.print_exc()

@ -77,7 +77,6 @@ del _namespace
import bpy
import addon_utils
def register():
@ -97,7 +96,7 @@ def register():
items_unique = set()
for mod in addon_utils.modules(addon_utils._addons_fake_modules):
for mod in addon_utils.modules(addon_utils.addons_fake_modules):
info = addon_utils.module_bl_info(mod)
items_unique.add(info["category"])

@ -926,7 +926,7 @@ class USERPREF_PT_addons(Panel):
used_ext = {ext.module for ext in userpref.addons}
# collect the categories that can be filtered on
addons = [(mod, addon_utils.module_bl_info(mod)) for mod in addon_utils.modules(addon_utils._addons_fake_modules)]
addons = [(mod, addon_utils.module_bl_info(mod)) for mod in addon_utils.modules(addon_utils.addons_fake_modules)]
split = layout.split(percentage=0.2)
col = split.column()