mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-05 03:46:25 +00:00
Implement support for deleting document references
This commit is contained in:
@@ -523,6 +523,15 @@ class BcfXml:
|
|||||||
topic.bim_snippet = None
|
topic.bim_snippet = None
|
||||||
self.edit_topic(topic)
|
self.edit_topic(topic)
|
||||||
|
|
||||||
|
def delete_document_reference(self, topic, index):
|
||||||
|
document_reference = topic.document_references[index]
|
||||||
|
if document_reference.referenced_document and not document_reference.is_external:
|
||||||
|
filepath = os.path.join(self.filepath, topic.guid, document_reference.referenced_document)
|
||||||
|
if os.path.exists(filepath):
|
||||||
|
os.remove(filepath)
|
||||||
|
del topic.document_references[index]
|
||||||
|
self.edit_topic(topic)
|
||||||
|
|
||||||
def add_bim_snippet(self, topic, bim_snippet):
|
def add_bim_snippet(self, topic, bim_snippet):
|
||||||
if topic.bim_snippet:
|
if topic.bim_snippet:
|
||||||
self.delete_bim_snippet(topic)
|
self.delete_bim_snippet(topic)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ if bpy is not None:
|
|||||||
operator.RemoveBcfComment,
|
operator.RemoveBcfComment,
|
||||||
operator.RemoveBcfBimSnippet,
|
operator.RemoveBcfBimSnippet,
|
||||||
operator.RemoveBcfReferenceLink,
|
operator.RemoveBcfReferenceLink,
|
||||||
|
operator.RemoveBcfDocumentReference,
|
||||||
operator.EditBcfReferenceLinks,
|
operator.EditBcfReferenceLinks,
|
||||||
operator.EditBcfLabels,
|
operator.EditBcfLabels,
|
||||||
operator.RemoveBcfLabel,
|
operator.RemoveBcfLabel,
|
||||||
|
|||||||
@@ -1002,6 +1002,21 @@ class RemoveBcfBimSnippet(bpy.types.Operator):
|
|||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class RemoveBcfDocumentReference(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.remove_bcf_document_reference"
|
||||||
|
bl_label = "Remove BCF Document Reference"
|
||||||
|
index: bpy.props.IntProperty()
|
||||||
|
|
||||||
|
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]
|
||||||
|
bcfxml.delete_document_reference(topic, self.index)
|
||||||
|
bpy.ops.bim.load_bcf_topic(topic_guid = topic.guid, topic_index = props.active_topic_index)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
class RemoveBcfComment(bpy.types.Operator):
|
class RemoveBcfComment(bpy.types.Operator):
|
||||||
bl_idname = "bim.remove_bcf_comment"
|
bl_idname = "bim.remove_bcf_comment"
|
||||||
bl_label = "Remove BCF Comment"
|
bl_label = "Remove BCF Comment"
|
||||||
|
|||||||
@@ -1839,19 +1839,19 @@ class BIM_PT_bcf_metadata(Panel):
|
|||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.operator("bim.add_bcf_bim_snippet")
|
row.operator("bim.add_bcf_bim_snippet")
|
||||||
|
|
||||||
if topic.document_references:
|
layout.label(text="Document References:")
|
||||||
layout.label(text="Document References:")
|
for index, doc in enumerate(topic.document_references):
|
||||||
for index, doc in enumerate(topic.document_references):
|
box = self.layout.box()
|
||||||
box = self.layout.box()
|
row = box.row(align=True)
|
||||||
row = box.row(align=True)
|
row.prop(doc, "reference")
|
||||||
row.prop(doc, "reference")
|
if doc.is_external:
|
||||||
if doc.is_external:
|
row.operator("bim.open_uri", icon="URL", text="").uri = doc.reference
|
||||||
row.operator("bim.open_uri", icon="URL", text="").uri = doc.reference
|
else:
|
||||||
else:
|
op = row.operator("bim.open_uri", icon="FILE_FOLDER", text="")
|
||||||
op = row.operator("bim.open_uri", icon="FILE_FOLDER", text="")
|
op.uri = os.path.join(bcfxml.filepath, topic.name, doc.reference)
|
||||||
op.uri = os.path.join(bcfxml.filepath, topic.name, doc.reference)
|
row.operator("bim.remove_bcf_document_reference", icon="X", text="").index = index
|
||||||
row = box.row(align=True)
|
row = box.row(align=True)
|
||||||
row.prop(doc, "description")
|
row.prop(doc, "description")
|
||||||
|
|
||||||
if topic.related_topics:
|
if topic.related_topics:
|
||||||
layout.label(text="Related Topics:")
|
layout.label(text="Related Topics:")
|
||||||
@@ -1893,7 +1893,9 @@ class BIM_PT_bcf_comments(Panel):
|
|||||||
author_text = "*{} ({})".format(comment.modified_author, comment.modified_date)
|
author_text = "*{} ({})".format(comment.modified_author, comment.modified_date)
|
||||||
row = box.row(align=True)
|
row = box.row(align=True)
|
||||||
row.label(text=author_text, icon="WORDWRAP_ON")
|
row.label(text=author_text, icon="WORDWRAP_ON")
|
||||||
row.prop(comment, "is_editable", icon="CHECKMARK" if comment.is_editable else "GREASEPENCIL", icon_only=True)
|
row.prop(
|
||||||
|
comment, "is_editable", icon="CHECKMARK" if comment.is_editable else "GREASEPENCIL", icon_only=True
|
||||||
|
)
|
||||||
row.operator("bim.remove_bcf_comment", icon="X", text="").comment_guid = comment.name
|
row.operator("bim.remove_bcf_comment", icon="X", text="").comment_guid = comment.name
|
||||||
|
|
||||||
if comment.is_editable:
|
if comment.is_editable:
|
||||||
|
|||||||
Reference in New Issue
Block a user