Implement support for adding BCF labels to topics

This commit is contained in:
Dion Moult
2020-12-28 12:46:52 +11:00
parent d5566785be
commit 3deba2e71e
4 changed files with 47 additions and 20 deletions
@@ -37,6 +37,7 @@ if bpy is not None:
operator.AddBcfTopic, operator.AddBcfTopic,
operator.AddBcfHeaderFile, operator.AddBcfHeaderFile,
operator.AddBcfReferenceLink, operator.AddBcfReferenceLink,
operator.AddBcfLabel,
operator.ViewBcfTopic, operator.ViewBcfTopic,
operator.RemoveBcfComment, operator.RemoveBcfComment,
operator.RemoveBcfReferenceLink, operator.RemoveBcfReferenceLink,
@@ -860,6 +860,25 @@ class AddBcfReferenceLink(bpy.types.Operator):
return {"FINISHED"} return {"FINISHED"}
class AddBcfLabel(bpy.types.Operator):
bl_idname = "bim.add_bcf_label"
bl_label = "Add BCF Label"
def execute(self, context):
bcfxml = bcfstore.BcfStore.get_bcfxml()
props = bpy.context.scene.BCFProperties
blender_topic = props.topics[props.active_topic_index]
topic = bcfxml.topics[blender_topic.name]
if not blender_topic.label:
return {"FINISHED"}
new = blender_topic.labels.add()
new.name = blender_topic.label
topic.labels.append(blender_topic.label)
bcfxml.edit_topic(topic)
blender_topic.label = ""
return {"FINISHED"}
class EditBcfReferenceLinks(bpy.types.Operator): class EditBcfReferenceLinks(bpy.types.Operator):
bl_idname = "bim.edit_bcf_reference_links" bl_idname = "bim.edit_bcf_reference_links"
bl_label = "Edit BCF Reference Link" bl_label = "Edit BCF Reference Link"
@@ -1027,6 +1027,7 @@ class BcfTopic(PropertyGroup):
reference_links: CollectionProperty(name="Reference Links", type=BcfReferenceLink) reference_links: CollectionProperty(name="Reference Links", type=BcfReferenceLink)
reference_link: StringProperty(default="", name="Reference Link") reference_link: StringProperty(default="", name="Reference Link")
labels: CollectionProperty(name="Labels", type=StrProperty) labels: CollectionProperty(name="Labels", type=StrProperty)
label: StringProperty(default="", name="Label")
bim_snippet: PointerProperty(type=BcfBimSnippet) bim_snippet: PointerProperty(type=BcfBimSnippet)
document_references: CollectionProperty(name="Document References", type=BcfDocumentReference) document_references: CollectionProperty(name="Document References", type=BcfDocumentReference)
related_topics: CollectionProperty(name="Related Topics", type=StrProperty) related_topics: CollectionProperty(name="Related Topics", type=StrProperty)
@@ -1748,6 +1748,8 @@ class BIM_PT_bcf_metadata(Panel):
bcf_topic = bcfxml.topics[topic.name] bcf_topic = bcfxml.topics[topic.name]
layout.label(text="Header Files:") layout.label(text="Header Files:")
if bcf_topic.header:
for index, f in enumerate(bcf_topic.header.files): for index, f in enumerate(bcf_topic.header.files):
box = self.layout.box() box = self.layout.box()
row = box.row(align=True) row = box.row(align=True)
@@ -1800,6 +1802,10 @@ class BIM_PT_bcf_metadata(Panel):
row = layout.row(align=True) row = layout.row(align=True)
row.prop(label, "name", text="") row.prop(label, "name", text="")
row.operator("bim.remove_bcf_label", icon="X", text="").index = index row.operator("bim.remove_bcf_label", icon="X", text="").index = index
row = layout.row()
row.prop(topic, "label")
row = layout.row()
row.operator("bim.add_bcf_label")
if topic.bim_snippet.schema: if topic.bim_snippet.schema:
layout.label(text="BIM Snippet:") layout.label(text="BIM Snippet:")