Fix failure to store installation state, store repositories in a set

This commit is contained in:
Ellwood Zwovic
2017-08-14 13:39:38 -07:00
parent 4934f463a1
commit 7666813407
2 changed files with 25 additions and 3 deletions

View File

@@ -328,7 +328,12 @@ class PACKAGE_OT_uninstall(SubprocMixin, bpy.types.Operator):
def get_installed_packages(refresh=False) -> list:
"""Get list of packages installed on disk"""
import addon_utils
return [Package.from_module(mod) for mod in addon_utils.modules(refresh=refresh)]
installed_pkgs = []
for mod in addon_utils.modules(refresh=refresh):
pkg = Package.from_module(mod)
pkg.installed = True
installed_pkgs.append(pkg)
return installed_pkgs
def get_repo_storage_path() -> Path:
return Path(bpy.utils.user_resource('CONFIG', 'repositories'))
@@ -805,6 +810,22 @@ class USERPREF_PT_packages(bpy.types.Panel):
else:
collapsed(metapkg, row)# }}}
# addon_preferences = userpref.addons[module_name].preferences
# if addon_preferences is not None:
# draw = getattr(addon_preferences, "draw", None)
# if draw is not None:
# addon_preferences_class = type(addon_preferences)
# box_prefs = col_box.box()
# box_prefs.label("Preferences:")
# addon_preferences_class.layout = box_prefs
# try:
# draw(context)
# except:
# import traceback
# traceback.print_exc()
# box_prefs.label(text="Error (see console)", icon='ERROR')
# del addon_preferences_class.layout
#
def center_message(layout, msg: str):
"""draw a label in the center of an extra-tall row"""
@@ -946,6 +967,7 @@ def build_packagelist() -> OrderedDict:# {{{
for repo in known_repositories:
for pkg in repo.packages:
pkg.repositories.add(repo)
if pkg.name is None:
return OrderedDict()
if pkg.name in masterlist:

View File

@@ -16,7 +16,7 @@ class Package:
self.url = ""
self.files = []
self.repositories = []
self.repositories = set()
self.installed_location = None
self.module_name = None
@@ -288,7 +288,7 @@ class ConsolidatedPackage:
for pkg in self:
if pkg == newpkg:
pkg.repositories
pkg.repositories.union(newpkg.repositories)
if newpkg.installed:
pkg.set_installed_metadata(newpkg)
break