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