mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-27 18:57:17 +00:00
Bonsai Attribute to support copying it's name to clipboard #5892
Example - https://i.imgur.com/Jf1jofZ.png
This commit is contained in:
@@ -105,6 +105,7 @@ classes = [
|
|||||||
operator.ClippingPlaneCutWithCappings,
|
operator.ClippingPlaneCutWithCappings,
|
||||||
operator.CloseBlendWarning,
|
operator.CloseBlendWarning,
|
||||||
operator.CloseError,
|
operator.CloseError,
|
||||||
|
operator.CopyTextToClipboard,
|
||||||
operator.EditBlenderCollection,
|
operator.EditBlenderCollection,
|
||||||
operator.FileAssociate,
|
operator.FileAssociate,
|
||||||
operator.FileUnassociate,
|
operator.FileUnassociate,
|
||||||
|
|||||||
@@ -1143,3 +1143,16 @@ class RevertClippingPlaneCut(bpy.types.Operator):
|
|||||||
if replaced_mesh:
|
if replaced_mesh:
|
||||||
obj.data = replaced_mesh
|
obj.data = replaced_mesh
|
||||||
tool.Blender.remove_data_block(mesh, do_unlink=False)
|
tool.Blender.remove_data_block(mesh, do_unlink=False)
|
||||||
|
|
||||||
|
|
||||||
|
class CopyTextToClipboard(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.copy_text_to_clipboard"
|
||||||
|
bl_label = "Copy Text To Clipboard"
|
||||||
|
bl_description = "Copy text to clipboard."
|
||||||
|
bl_options = set()
|
||||||
|
|
||||||
|
text: bpy.props.StringProperty(options={"SKIP_SAVE"})
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
context.window_manager.clipboard = self.text
|
||||||
|
return {"FINISHED"}
|
||||||
|
|||||||
@@ -1122,7 +1122,7 @@ def draw_statusbar(self, context):
|
|||||||
self.layout.label(text=text)
|
self.layout.label(text=text)
|
||||||
|
|
||||||
|
|
||||||
def draw_custom_context_menu(self, context):
|
def draw_custom_context_menu(self: bpy.types.Menu, context: bpy.types.Context) -> None:
|
||||||
# https://blender.stackexchange.com/a/275555/86891
|
# https://blender.stackexchange.com/a/275555/86891
|
||||||
if (
|
if (
|
||||||
not hasattr(context, "button_pointer")
|
not hasattr(context, "button_pointer")
|
||||||
@@ -1150,12 +1150,16 @@ def draw_custom_context_menu(self, context):
|
|||||||
url = doc.get("spec_url", "")
|
url = doc.get("spec_url", "")
|
||||||
else: # It's a custom property set. No URL available
|
else: # It's a custom property set. No URL available
|
||||||
url = ""
|
url = ""
|
||||||
|
attr_name = attr.name
|
||||||
if description:
|
if description:
|
||||||
layout.separator()
|
layout.separator()
|
||||||
op_description = layout.operator("bim.show_description", text="IFC Description", icon="INFO")
|
op_description = layout.operator("bim.show_description", text="IFC Description", icon="INFO")
|
||||||
op_description.attr_name = getattr(context.button_pointer, "name", "")
|
op_description.attr_name = attr_name
|
||||||
op_description.description = description
|
op_description.description = description
|
||||||
op_description.url = url
|
op_description.url = url
|
||||||
|
if attr_name:
|
||||||
|
op = layout.operator("bim.copy_text_to_clipboard", text="Copy Attribute Name", icon="COPYDOWN")
|
||||||
|
op.text = attr_name
|
||||||
else:
|
else:
|
||||||
# Ugly but we can't know which type of data is under the cursor so we test everything until it clicks
|
# Ugly but we can't know which type of data is under the cursor so we test everything until it clicks
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user