Optimize package metadata fetching; avoid checking if packages are installed every redraw

This commit is contained in:
Ellwood Zwovic
2017-08-12 19:42:51 -07:00
parent 6691b0b226
commit 4934f463a1

View File

@@ -20,10 +20,13 @@ class Package:
self.installed_location = None
self.module_name = None
self.installed = False
self.is_user = False
self.enabled = False
self.set_from_dict(package_dict)
@property
def is_user(self) -> bool:
def test_is_user(self) -> bool:
"""Return true if package's install location is in user or preferences scripts path"""
import bpy
user_script_path = bpy.utils.script_path_user()
@@ -41,8 +44,7 @@ class Package:
return in_user or in_prefs
@property
def enabled(self) -> bool:
def test_enabled(self) -> bool:
"""Return true if package is enabled"""
import bpy
if self.module_name is not None:
@@ -50,8 +52,7 @@ class Package:
else:
return False
@property
def installed(self) -> bool:
def test_installed(self) -> bool:
"""Return true if package is installed"""
import addon_utils
return len([Package.from_module(mod) for mod in addon_utils.modules(refresh=False) if
@@ -60,11 +61,11 @@ class Package:
def set_installed_metadata(self, installed_pkg):
"""Sets metadata specific to installed packages from the Package given as `installed_pkg`"""
# self.installed = installed_pkg.installed
# self.enabled = installed_pkg.enabled
self.installed = installed_pkg.test_installed()
self.enabled = installed_pkg.test_enabled()
self.is_user = installed_pkg.test_is_user()
self.module_name = installed_pkg.module_name
self.installed_location = installed_pkg.installed_location
# self.is_user = installed_pkg.is_user
def to_dict(self) -> dict:
"""