[Bf-extensions-cvs] [d4674c9e] master: Revert accidental commit

Demeter Dzadik noreply at git.blender.org
Fri Jan 14 12:14:41 CET 2022


Commit: d4674c9e347a05d48ab3f5850e338578c1f4f664
Author: Demeter Dzadik
Date:   Fri Jan 14 12:14:06 2022 +0100
Branches: master
https://developer.blender.org/rBAd4674c9e347a05d48ab3f5850e338578c1f4f664

Revert accidental commit

This reverts commit f0f48da209de08d66fd9e3b311e379687c7ba699.

===================================================================

M	rigify/__init__.py
M	rigify/feature_set_list.py
M	rigify/metarig_menu.py
M	rigify/ui.py

===================================================================

diff --git a/rigify/__init__.py b/rigify/__init__.py
index f4d1979b..20e18a42 100644
--- a/rigify/__init__.py
+++ b/rigify/__init__.py
@@ -149,33 +149,6 @@ class RigifyFeatureSets(bpy.types.PropertyGroup):
     name: bpy.props.StringProperty()
     module_name: bpy.props.StringProperty()
 
-    def toggle_featureset(self, context):
-        feature_set_list.call_register_function(self.module_name, self.enabled)
-        context.preferences.addons[__package__].preferences.update_external_rigs()
-
-    enabled: bpy.props.BoolProperty(
-        name = "Enabled", 
-        description = "Whether this feature-set is registered or not",
-        update = toggle_featureset,
-        default = True
-    )
-
-
-class RIGIFY_UL_FeatureSets(bpy.types.UIList):
-    def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
-        rigify_prefs = data
-        feature_sets = rigify_prefs.rigify_feature_sets
-        active_set = feature_sets[rigify_prefs.active_feature_set_index]
-        feature_set_entry = item
-        if self.layout_type in {'DEFAULT', 'COMPACT'}:
-            row = layout.row()
-            row.prop(feature_set_entry, 'name', text="", emboss=False)
-
-            icon = 'CHECKBOX_HLT' if feature_set_entry.enabled else 'CHECKBOX_DEHLT'
-            row.enabled = feature_set_entry.enabled
-            layout.prop(feature_set_entry, 'enabled', text="", icon=icon, emboss=False)
-        elif self.layout_type in {'GRID'}:
-            pass
 
 class RigifyPreferences(AddonPreferences):
     # this must match the addon name, use '__package__'
@@ -184,50 +157,32 @@ class RigifyPreferences(AddonPreferences):
 
     def register_feature_sets(self, register):
         """Call register or unregister of external feature sets"""
-        for set_name in feature_set_list.get_enabled_modules_names():
+        for set_name in feature_set_list.get_installed_list():
             feature_set_list.call_register_function(set_name, register)
 
-    def refresh_installed_feature_sets(self):
-        """Synchronize preferences entries with what's actually in the file system."""
-        feature_set_prefs = self.rigify_feature_sets
-
-        module_names = feature_set_list.get_installed_modules_names()
-
-        # If there is a feature set preferences entry with no corresponding 
-        # installed module, user must've manually removed it from the filesystem,
-        # so let's remove such entries.
-        for i, fs in enumerate(reversed(feature_set_prefs)):
-            if fs.module_name not in module_names:
-                feature_set_prefs.remove(i)
-                # Active index could end up out of bounds.
-                self.active_feature_set_index = 0
-
-        # If there is an installed feature set in the file system but no corresponding
-        # entry, user must've installed it manually. Make sure it has an entry.
-        for module_name in module_names:
-            feature_set_name = feature_set_list.get_ui_name(module_name)
-            if feature_set_name not in feature_set_prefs:
-                fs = feature_set_prefs.add()
-                fs.name = feature_set_name
-                fs.module_name = module_name
-
-    def update_external_rigs(self):
+    def update_external_rigs(self, force=False):
         """Get external feature sets"""
+        set_list = feature_set_list.get_installed_list()
 
-        self.refresh_installed_feature_sets()
+        # Update feature set list
+        self.rigify_feature_sets.clear()
 
-        set_list = feature_set_list.get_enabled_modules_names()
+        for s in set_list:
+            list_entry = self.rigify_feature_sets.add()
+            list_entry.name = feature_set_list.get_ui_name(s)
+            list_entry.module_name = s
 
-        # Reload rigs
-        print('Reloading external rigs...')
-        rig_lists.get_external_rigs(set_list)
+        if force or len(set_list) > 0:
+            # Reload rigs
+            print('Reloading external rigs...')
+            rig_lists.get_external_rigs(set_list)
 
-        # Reload metarigs
-        print('Reloading external metarigs...')
-        metarig_menu.get_external_metarigs(set_list)
+            # Reload metarigs
+            print('Reloading external metarigs...')
+            metarig_menu.get_external_metarigs(set_list)
 
-        # Re-register rig parameters
-        register_rig_parameters()
+            # Re-register rig parameters
+            register_rig_parameters()
 
     rigify_feature_sets: bpy.props.CollectionProperty(type=RigifyFeatureSets)
     active_feature_set_index: IntProperty()
@@ -241,8 +196,8 @@ class RigifyPreferences(AddonPreferences):
 
         row = layout.row()
         row.template_list(
-            'RIGIFY_UL_FeatureSets',
-            '',
+            "UI_UL_list",
+            "rigify_feature_sets",
             self, "rigify_feature_sets",
             self, 'active_feature_set_index'
         )
@@ -304,7 +259,8 @@ def draw_feature_set_prefs(layout, context, featureset: RigifyFeatureSets):
         op = row.operator('wm.url_open', text="Report a Bug", icon='URL')
         op.url = info['tracker_url']
 
-    row.operator("wm.rigify_remove_feature_set", text="Remove", icon='CANCEL')
+    op = row.operator("wm.rigify_remove_feature_set", text="Remove", icon='CANCEL')
+    op.featureset = featureset.module_name
 
 
 class RigifyName(bpy.types.PropertyGroup):
@@ -487,7 +443,6 @@ classes = (
     RigifyColorSet,
     RigifySelectionColors,
     RigifyArmatureLayer,
-    RIGIFY_UL_FeatureSets,
     RigifyFeatureSets,
     RigifyPreferences,
 )
diff --git a/rigify/feature_set_list.py b/rigify/feature_set_list.py
index 0367a70d..a50bd010 100644
--- a/rigify/feature_set_list.py
+++ b/rigify/feature_set_list.py
@@ -16,8 +16,6 @@
 #
 #======================= END GPL LICENSE BLOCK ========================
 
-from typing import List
-
 import bpy
 from bpy.props import StringProperty
 import os
@@ -46,8 +44,7 @@ def get_install_path(*, create=False):
     return INSTALL_PATH
 
 
-def get_installed_modules_names() -> List[str]:
-    """Return a list of module names of all feature sets in the file system."""
+def get_installed_list():
     features_path = get_install_path()
     if not features_path:
         return []
@@ -63,20 +60,6 @@ def get_installed_modules_names() -> List[str]:
     return sets
 
 
-def get_enabled_modules_names() -> List[str]:
-    """Return a list of module names of all enabled feature sets."""
-    rigify_prefs = bpy.context.preferences.addons[__package__].preferences
-    installed_module_names = get_installed_modules_names()
-    rigify_feature_sets = rigify_prefs.rigify_feature_sets
-
-    enabled_module_names = { 
-        fs.module_name for fs in rigify_feature_sets 
-        if fs.enabled and fs.module_name in installed_module_names
-    }
-
-    return enabled_module_names
-
-
 def get_module(feature_set):
     return importlib.import_module('.'.join([*NAME_PREFIX, feature_set]))
 
@@ -105,17 +88,17 @@ def get_info_dict(feature_set):
     return {}
 
 
-def call_function_safe(module_name, func_name, args=[], kwargs={}):
-    module = get_module_safe(module_name)
+def call_function_safe(feature_set, name, args=[], kwargs={}):
+    module = get_module_safe(feature_set)
 
     if module:
-        func = getattr(module, func_name, None)
+        func = getattr(module, name, None)
 
         if callable(func):
             try:
                 return func(*args, **kwargs)
             except Exception:
-                print(f"Rigify Error: Could not call function '{func_name}' of feature set '{module_name}': exception occurred.\n")
+                print("Rigify Error: Could not call function '%s' of feature set '%s': exception occurred.\n" % (name, feature_set))
                 traceback.print_exc()
                 print("")
 
@@ -145,7 +128,7 @@ def feature_set_items(scene, context):
         ('rigify', 'Rigify Built-in', 'Rigs bundled with Rigify'),
     ]
 
-    for fs in get_enabled_modules_names():
+    for fs in get_installed_list():
         ui_name = get_ui_name(fs)
         items.append((fs, ui_name, ui_name))
 
@@ -239,7 +222,8 @@ class DATA_OT_rigify_add_feature_set(bpy.types.Operator):
 
             addon_prefs.update_external_rigs()
 
-            addon_prefs.active_feature_set_index = len(addon_prefs.rigify_feature_sets)-1
+            new_index = addon_prefs.rigify_feature_sets.find(get_ui_name(fixed_dirname))
+            addon_prefs.active_feature_set_index = new_index
 
         return {'FINISHED'}
 
@@ -250,6 +234,8 @@ class DATA_OT_rigify_remove_feature_set(bpy.types.Operator):
     bl_description = "Remove external feature set (rigs, metarigs, ui templates)"
     bl_options = {"REGISTER", "UNDO", "INTERNAL"}
 
+    featureset: StringProperty(maxlen=1024, options={'HIDDEN', 'SKIP_SAVE'})
+
     @classmethod
     def poll(cls, context):
         return True
@@ -259,29 +245,18 @@ class DATA_OT_rigify_remove_feature_set(bpy.types.Operator):
 
     def execute(self, context):
         addon_prefs = context.preferences.addons[__package__].preferences
-        feature_sets = addon_prefs.rigify_feature_sets
-        active_idx = addon_prefs.active_feature_set_index
-        active_fs = feature_sets[active_idx]
 
-        # Call the unregister callback of the set being removed.
-        if active_fs.enabled:
-            call_register_function(active_fs.module_name, register=False)
+        # Call the unregister callback of the set being removed
+        call_register_function(self.featureset, False)
 
-        # Remove the feature set's folder from the file system.
         rigify_config_path = get_install_path()
         if rigify_config_path:
-            set_path = os.path.join(rigify_config_path, active_fs.module_name)
+            set_path = os.path.join(rigify_config_path, self.featureset)
             if os.path.exists(set_path):
                 rmtree(set_path)
 
-        # Remove the feature set's entry from the addon preferences.
-        feature_sets.remove(active_idx)
-
-        # Remove the feature set's entries from the metarigs and rig types.
-        addon_prefs.update_external_rigs()
-
-        # Update active index.
-        

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list