From 6a5d255c2f541209380d4ab29d21e71d0934130a Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Tue, 22 Dec 2020 18:23:43 +1100 Subject: [PATCH] Implement delete BCF comment --- src/bcf/bcf/bcfxml.py | 8 ++++++-- src/bcf/bcf/data.py | 2 +- .../blenderbim/bim/__init__.py | 1 + .../blenderbim/bim/operator.py | 19 +++++++++++++++++++ src/ifcblenderexport/blenderbim/bim/ui.py | 14 ++++++++------ 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/bcf/bcf/bcfxml.py b/src/bcf/bcf/bcfxml.py index 28cea52ca2..2b03be6812 100644 --- a/src/bcf/bcf/bcfxml.py +++ b/src/bcf/bcf/bcfxml.py @@ -438,9 +438,11 @@ class BcfXml: return for bitmap in viewpoint.bitmaps: bitmap_el = self._create_element(parent, "Bitmap") - text_map = {"Bitmap": bitmap.bitmap_type, "Reference": bitmap.reference, "Height": bitmap.height} + + text_map = {"Bitmap": bitmap.bitmap_type, "Reference": bitmap.reference} for key, value in text_map.items(): self._create_element(bitmap_el, key, text=value) + location_el = self._create_element(bitmap_el, "Location") self.write_vector(location_el, bitmap.location) normal_el = self._create_element(bitmap_el, "Normal") @@ -448,6 +450,8 @@ class BcfXml: up_el = self._create_element(bitmap_el, "Up") self.write_vector(up_el, bitmap.up) + self._create_element(bitmap_el, "Height", text=bitmap.height) + def write_vector(self, parent, from_obj): self._create_element(parent, "X", text=from_obj.x) self._create_element(parent, "Y", text=from_obj.y) @@ -631,7 +635,7 @@ class BcfXml: for item in visinfo["Bitmap"]: bitmap = bcf.data.Bitmap() bitmap.reference = item["Reference"] - bitmap.bitmap_type = item["Bitmap"].lower() + bitmap.bitmap_type = item["Bitmap"].upper() self.set_vector(bitmap.location, item["Location"]) self.set_vector(bitmap.normal, item["Normal"]) self.set_vector(bitmap.up, item["Up"]) diff --git a/src/bcf/bcf/data.py b/src/bcf/bcf/data.py index 0be7560e55..7fd23638be 100644 --- a/src/bcf/bcf/data.py +++ b/src/bcf/bcf/data.py @@ -156,7 +156,7 @@ class Bitmap: def __init__(self): self.reference = "" # Only in BCF-XML self.bitmap_data = None # Only in BCF-API - self.bitmap_type = "png" # Enum of png or jpg + self.bitmap_type = "PNG" # Enum of png or jpg self.location = Point() self.normal = Direction() self.up = Direction() diff --git a/src/ifcblenderexport/blenderbim/bim/__init__.py b/src/ifcblenderexport/blenderbim/bim/__init__.py index f80dd23fe3..017f5a17e9 100644 --- a/src/ifcblenderexport/blenderbim/bim/__init__.py +++ b/src/ifcblenderexport/blenderbim/bim/__init__.py @@ -37,6 +37,7 @@ if bpy is not None: operator.AddBcfTopic, operator.ViewBcfTopic, operator.RemoveBcfViewpoint, + operator.RemoveBcfComment, operator.ActivateBcfViewpoint, operator.OpenUri, operator.OpenBcfReferenceLink, diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index f5c6ba7efe..69ce23f783 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -622,6 +622,8 @@ class LoadBcfComments(bpy.types.Operator): bcfxml = bcfstore.BcfStore.get_bcfxml() bcfxml.get_comments(self.topic_guid) blender_topic = bpy.context.scene.BCFProperties.topics.get(self.topic_guid) + while len(blender_topic.comments) > 0: + blender_topic.comments.remove(0) for comment in bcfxml.topics[self.topic_guid].comments.values(): new = blender_topic.comments.add() data_map = { @@ -694,6 +696,7 @@ class EditBcfTopic(bpy.types.Operator): topic.topic_type = blender_topic.type or None bcfxml.edit_topic(topic) + props.active_topic_index = props.active_topic_index # Refreshes the BCF Topic return {"FINISHED"} @@ -749,6 +752,22 @@ class RemoveBcfViewpoint(bpy.types.Operator): topic = bcfxml.topics[blender_topic.name] bcfxml.delete_viewpoint(viewpoint_guid, topic) props.active_topic_index = props.active_topic_index # Refreshes the BCF Topic + return {"FINISHED"} + + +class RemoveBcfComment(bpy.types.Operator): + bl_idname = "bim.remove_bcf_comment" + bl_label = "Remove BCF Comment" + comment_guid: bpy.props.StringProperty() + + 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_comment(self.comment_guid, topic) + props.active_topic_index = props.active_topic_index # Refreshes the BCF Topic + bpy.ops.bim.load_bcf_comments(topic_guid = topic.guid) print(bcfxml.filepath) return {"FINISHED"} diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index b159bb95ab..48afe4913d 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1837,13 +1837,16 @@ class BIM_PT_bcf_comments(Panel): topic = props.topics[props.active_topic_index] for comment in topic.comments: box = self.layout.box() - box.separator() + author_text = "{} ({})".format(comment.author, comment.date) if comment.modified_author: author_text = "*{} ({})".format(comment.modified_author, comment.modified_date) - box.label(text=author_text, icon="WORDWRAP_ON") - box.separator() - box.scale_y = 0.5 + row = box.row(align=True) + row.label(text=author_text, icon="WORDWRAP_ON") + row.operator("bim.remove_bcf_comment", icon="X", text="").comment_guid = comment.name + + col = box.column(align=True) + col.scale_y = 0.8 words = comment.comment.split() while words: total_line_chars = 0 @@ -1852,8 +1855,7 @@ class BIM_PT_bcf_comments(Panel): word = words.pop(0) line_words.append(word) total_line_chars += len(word) + 1 # 1 is for the space - box.label(text=" ".join(line_words)) - box.separator() + col.label(text=" ".join(line_words)) class BIM_PT_qa(Panel):