From 7e41dc49b675e1789fff31dbc9dfc3c5175f4d10 Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Sun, 16 Jan 2022 11:54:08 +0100 Subject: [PATCH 1/2] Allow to toggle family filters between "include" or "exclude" filtering --- openpype/settings/defaults/project_settings/global.json | 1 + .../projects_schema/schemas/schema_global_tools.json | 8 +++++++- openpype/tools/utils/lib.py | 8 ++++++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/openpype/settings/defaults/project_settings/global.json b/openpype/settings/defaults/project_settings/global.json index cff1259c98..c418377682 100644 --- a/openpype/settings/defaults/project_settings/global.json +++ b/openpype/settings/defaults/project_settings/global.json @@ -297,6 +297,7 @@ "family_filter_profiles": [ { "hosts": [], + "is_include": true, "task_types": [], "filter_families": [] } diff --git a/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json b/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json index bb71c9bde6..863ec7f979 100644 --- a/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json +++ b/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json @@ -267,7 +267,13 @@ "label": "Task types" }, { - "type": "splitter" + "type": "boolean", + "key": "is_include", + "label": "Exclude (OFF) / Include (ON)" + }, + { + "type": "label", + "label": "Include: show selected families by default. Hides others by default.
Exclude: hide selected families by default. Shows others by default." }, { "type": "template", diff --git a/openpype/tools/utils/lib.py b/openpype/tools/utils/lib.py index 6742df8557..886cdb5186 100644 --- a/openpype/tools/utils/lib.py +++ b/openpype/tools/utils/lib.py @@ -228,6 +228,7 @@ class FamilyConfigCache: self.dbcon = dbcon self.family_configs = {} self._family_filters_set = False + self._family_filters_is_include = True self._require_refresh = True @classmethod @@ -249,7 +250,7 @@ class FamilyConfigCache: "icon": self.default_icon() } if self._family_filters_set: - item["state"] = False + item["state"] = not self._family_filters_is_include return item def refresh(self, force=False): @@ -313,20 +314,23 @@ class FamilyConfigCache: matching_item = filter_profiles(profiles, profiles_filter) families = [] + is_include = True if matching_item: families = matching_item["filter_families"] + is_include = matching_item["is_include"] if not families: return self._family_filters_set = True + self._family_filters_is_include = is_include # Replace icons with a Qt icon we can use in the user interfaces for family in families: family_info = { "name": family, "icon": self.default_icon(), - "state": True + "state": is_include } self.family_configs[family] = family_info From d5bae9c288221e0e1269cfa3c9eb0e77844ef19e Mon Sep 17 00:00:00 2001 From: Roy Nieterau Date: Sun, 23 Jan 2022 14:06:54 +0100 Subject: [PATCH 2/2] Remove descriptive label, remove (on)/(off) from `is_include` label --- .../projects_schema/schemas/schema_global_tools.json | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json b/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json index 863ec7f979..f8c9482e5f 100644 --- a/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json +++ b/openpype/settings/entities/schemas/projects_schema/schemas/schema_global_tools.json @@ -269,11 +269,7 @@ { "type": "boolean", "key": "is_include", - "label": "Exclude (OFF) / Include (ON)" - }, - { - "type": "label", - "label": "Include: show selected families by default. Hides others by default.
Exclude: hide selected families by default. Shows others by default." + "label": "Exclude / Include" }, { "type": "template",