Optimize package metadata fetching; avoid checking if packages are installed every redraw
This commit is contained in:
@@ -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:
|
||||
"""
|
||||
|
Reference in New Issue
Block a user