Store repository on window manager so it isn't saved in the .blend
We store it outside blender in JSON anyway, storing it two places at once could be confusing. We can move it back into the .blend later if it seems that would be preferred.
This commit is contained in:
@@ -284,8 +284,7 @@ class BPKG_OT_refresh(SubprocMixin, bpy.types.Operator):
|
||||
self.quit()
|
||||
|
||||
def _subproc_repository_result(self, result: subproc.RepositoryResult):
|
||||
prefs = bpy.context.user_preferences.addons[__package__].preferences
|
||||
prefs['repo'] = result.repository
|
||||
bpy.context.window_manager['package_repo'] = result.repository
|
||||
self.report({'INFO'}, 'Package list retrieved successfully')
|
||||
self.quit()
|
||||
|
||||
@@ -443,7 +442,7 @@ class USERPREF_PT_packages(bpy.types.Panel):
|
||||
return False
|
||||
|
||||
|
||||
# use two lists as a simple way of putting matches from the start on top
|
||||
# use two lists as a simple way of putting "matches from the beginning" on top
|
||||
contains = []
|
||||
startswith = []
|
||||
|
||||
@@ -544,21 +543,22 @@ class USERPREF_PT_packages(bpy.types.Panel):
|
||||
row.scale_y = 10
|
||||
|
||||
try:
|
||||
#TODO either store repos in windowmanager and reload from disk every time, or store them in the .blend. Not both
|
||||
repo = context.user_preferences.addons[__package__].preferences['repo']
|
||||
repo = wm['package_repo']
|
||||
except KeyError:
|
||||
center_message(pkgzone, "Loading Repositories...")
|
||||
|
||||
import pathlib
|
||||
# TODO: read repository synchronously for now; can't run an operator to do async monitoring from draw code
|
||||
prefs = bpy.context.user_preferences.addons[__package__].preferences
|
||||
storage_path = pathlib.Path(bpy.utils.user_resource('CONFIG', 'packages', create=True))
|
||||
res = subproc._load_repo(storage_path)
|
||||
prefs['repo'] = res.to_dict(sort=True, ids=True)
|
||||
try:
|
||||
res = subproc._load_repo(storage_path)
|
||||
wm['package_repo'] = res.to_dict(sort=True, ids=True)
|
||||
except FileNotFoundError:
|
||||
wm['package_repo'] = None
|
||||
return
|
||||
|
||||
if repo is None:
|
||||
center_message(pkgzone, "No repository found. Add one in the addon preferences.")
|
||||
center_message(pkgzone, "No repositories found.")
|
||||
return
|
||||
|
||||
filters = {
|
||||
@@ -586,15 +586,13 @@ class WM_OT_package_toggle_expand(bpy.types.Operator):
|
||||
)
|
||||
|
||||
def execute(self, context):
|
||||
repo = context.user_preferences.addons[__package__].preferences.get('repo')
|
||||
repo = context.window_manager.get('package_repo')
|
||||
|
||||
if not repo:
|
||||
return {'CANCELLED'}
|
||||
|
||||
pkg_id = self.package_id
|
||||
|
||||
for pkg in repo['packages']:
|
||||
if pkg.get('id') == pkg_id:
|
||||
if pkg.get('id') == self.package_id:
|
||||
# if pkg['expand'] is unset, it's not expanded
|
||||
pkg['expand'] = not pkg.get('expand', False)
|
||||
|
||||
|
Reference in New Issue
Block a user