From 7164103a802e5c07c258b3201ecff2f87544223a Mon Sep 17 00:00:00 2001 From: Gorgious56 Date: Fri, 28 Oct 2022 08:33:56 +0200 Subject: [PATCH] Search button now only displays when an enum has more than 10 items To reduce visual clutter for enums with only a few values Also tweak the online docs ui function --- src/blenderbim/blenderbim/bim/helper.py | 9 +++++---- src/blenderbim/blenderbim/bim/ui.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/helper.py b/src/blenderbim/blenderbim/bim/helper.py index d2bf92523b..dcf1ea36d6 100644 --- a/src/blenderbim/blenderbim/bim/helper.py +++ b/src/blenderbim/blenderbim/bim/helper.py @@ -118,11 +118,12 @@ def export_attributes(props, callback=None): def prop_with_search(layout, data, prop_name, **kwargs): # kwargs are layout.prop arguments (text, icon, etc.) row = layout.row(align=True) - # Magick courtesy of https://blender.stackexchange.com/a/203443/86891 - row.context_pointer_set(name="data", data=data) row.prop(data, prop_name, **kwargs) - op = row.operator("bim.enum_property_search", text="", icon="VIEWZOOM") - op.prop_name = prop_name + if len(get_enum_items(data, prop_name)) > 10: + # Magick courtesy of https://blender.stackexchange.com/a/203443/86891 + row.context_pointer_set(name="data", data=data) + op = row.operator("bim.enum_property_search", text="", icon="VIEWZOOM") + op.prop_name = prop_name def get_enum_items(data, prop_name, context=None): diff --git a/src/blenderbim/blenderbim/bim/ui.py b/src/blenderbim/blenderbim/bim/ui.py index 223a42dc65..0594604bce 100644 --- a/src/blenderbim/blenderbim/bim/ui.py +++ b/src/blenderbim/blenderbim/bim/ui.py @@ -385,10 +385,12 @@ class BIM_PT_misc_object(Panel): def draw_custom_context_menu(self, context): - layout = self.layout - layout.separator() # https://blender.stackexchange.com/a/275555/86891 - prop_value = getattr(context.button_pointer, context.button_prop.identifier) + prop = context.button_pointer + prop_name = context.button_prop.identifier + prop_value = getattr(prop, prop_name, None) + if prop_value is None: + return try: url = get_ifc_entity_doc_url(prop_value) except KeyError: @@ -396,5 +398,7 @@ def draw_custom_context_menu(self, context): pass else: if url: - url_op = layout.operator("bim.open_webbrowser", icon="URL", text="Open IFC Documentation") + layout = self.layout + layout.separator() + url_op = layout.operator("bim.open_webbrowser", icon="URL", text="Online IFC Documentation") url_op.url = url