From 50ba0815f7bb4513e0bc73dbbff827b3d32d21b8 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 28 Mar 2023 19:33:05 +0500 Subject: [PATCH] Fixed UI for box alignment Replaced checkboxes with icons and removed vertical and horizontal space between them, now looks neat. --- .../blenderbim/bim/module/drawing/operator.py | 23 +++++++++--------- .../blenderbim/bim/module/drawing/ui.py | 24 ++++++++++--------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/operator.py b/src/blenderbim/blenderbim/bim/module/drawing/operator.py index 0eb091fb7e..b319943b9a 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/operator.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/operator.py @@ -1236,19 +1236,20 @@ class EditTextPopup(bpy.types.Operator): attributes = [a for a in literal_props.attributes if a.name != "BoxAlignment"] blenderbim.bim.helper.draw_attributes(attributes, box) - # a bit hacky way to align box alignment widget - rows = [box.row(align=True) for i in range(3)] + row = box.row(align=True) + cols = [row.column(align=True) for i in range(3)] for i in range(9): - if i % 3 == 0: - split = rows[i // 3].split(factor=0.1, align=True) - split.column() - split.prop(literal_props, "box_alignment", text="", index=i) + cols[i % 3].prop( + literal_props, + "box_alignment", + text="", + index=i, + icon="RADIOBUT_ON" if literal_props.box_alignment[i] else "RADIOBUT_OFF", + ) - text_lines = ["Text box alignment:", literal_props.attributes["BoxAlignment"].string_value, ""] - for i in range(3): - split = rows[i].split(factor=0.1, align=False) - split.column() - split.label(text=text_lines[i]) + col = row.column(align=True) + col.label(text=" Text box alignment:") + col.label(text=f' {literal_props.attributes["BoxAlignment"].string_value}') def cancel(self, context): # disable editing when dialog is closed diff --git a/src/blenderbim/blenderbim/bim/module/drawing/ui.py b/src/blenderbim/blenderbim/bim/module/drawing/ui.py index 8f8a6e34c3..7b48f4f2f2 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/ui.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/ui.py @@ -373,19 +373,21 @@ class BIM_PT_text(Panel): attributes = [a for a in literal_props.attributes if a.name != "BoxAlignment"] blenderbim.bim.helper.draw_attributes(attributes, box) - # a bit hacky way to align box alignment widget - rows = [box.row(align=True) for i in range(3)] + row = box.row(align=True) + cols = [row.column(align=True) for i in range(3)] for i in range(9): - if i % 3 == 0: - split = rows[i // 3].split(factor=0.1, align=True) - split.column() - split.prop(literal_props, "box_alignment", text="", index=i) + cols[i % 3].prop( + literal_props, + "box_alignment", + text="", + index=i, + icon="RADIOBUT_ON" if literal_props.box_alignment[i] else "RADIOBUT_OFF", + ) + + col = row.column(align=True) + col.label(text=" Text box alignment:") + col.label(text=f' {literal_props.attributes["BoxAlignment"].string_value}') - text_lines = ["Text box alignment:", literal_props.attributes["BoxAlignment"].string_value, ""] - for i in range(3): - split = rows[i].split(factor=0.1, align=False) - split.column() - split.label(text=text_lines[i]) else: text_data = DecoratorData.get_ifc_text_data(obj)