mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 18:16:40 +00:00
Reuse draw_attributes for groups, layers, structures and systems
This commit is contained in:
@@ -54,7 +54,9 @@ def draw_attributes(
|
||||
popup_active_attribute: Optional[bonsai.bim.prop.Attribute] = None,
|
||||
callback: Optional[Callable[[bonsai.bim.prop.Attribute, bpy.types.UILayout], None]] = None,
|
||||
) -> None:
|
||||
"""you can set attribute active in popup with `active_attribute`
|
||||
"""Draw editable UI for prop.Attributes.
|
||||
|
||||
You can set attribute active in popup with `active_attribute`
|
||||
meaning you will be able to type into attribute's field without having to click
|
||||
on it first
|
||||
"""
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import bpy
|
||||
from bpy.types import Panel, UIList
|
||||
from bonsai.bim.ifc import IfcStore
|
||||
from bonsai.bim.helper import draw_attributes
|
||||
from bonsai.bim.module.group.data import GroupsData, ObjectGroupsData
|
||||
|
||||
|
||||
@@ -60,12 +62,8 @@ class BIM_PT_groups(Panel):
|
||||
if self.props.active_group_id:
|
||||
self.draw_editable_ui(context)
|
||||
|
||||
def draw_editable_ui(self, context):
|
||||
for attribute in self.props.group_attributes:
|
||||
row = self.layout.row(align=True)
|
||||
row.prop(attribute, "string_value", text=attribute.name)
|
||||
if attribute.is_optional:
|
||||
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
|
||||
def draw_editable_ui(self, context: bpy.types.Context) -> None:
|
||||
draw_attributes(self.props.group_attributes, self.layout)
|
||||
|
||||
|
||||
class BIM_PT_object_groups(Panel):
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Bonsai. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import bpy
|
||||
from bpy.types import Panel, UIList, Mesh
|
||||
from bonsai.bim.ifc import IfcStore
|
||||
from bonsai.bim.helper import draw_attributes
|
||||
from bonsai.bim.module.layer.data import LayersData
|
||||
|
||||
|
||||
@@ -61,12 +63,8 @@ class BIM_PT_layers(Panel):
|
||||
if self.props.active_layer_id:
|
||||
self.draw_editable_ui(context)
|
||||
|
||||
def draw_editable_ui(self, context):
|
||||
for attribute in self.props.layer_attributes:
|
||||
row = self.layout.row(align=True)
|
||||
row.prop(attribute, "string_value", text=attribute.name)
|
||||
if attribute.is_optional:
|
||||
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
|
||||
def draw_editable_ui(self, context: bpy.types.Context) -> None:
|
||||
draw_attributes(self.props.layer_attributes, self.layout)
|
||||
|
||||
|
||||
class BIM_UL_layers(UIList):
|
||||
|
||||
@@ -59,20 +59,8 @@ def draw_boundary_condition_ui(layout, boundary_condition, connection_id, props)
|
||||
draw_boundary_condition_read_only_ui(layout, boundary_condition)
|
||||
|
||||
|
||||
def draw_boundary_condition_editable_ui(layout, props):
|
||||
for attribute in props.boundary_condition_attributes:
|
||||
if attribute.data_type == "string":
|
||||
row = layout.row()
|
||||
row.prop(attribute, "string_value", text=attribute["name"])
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
row.prop(attribute, "enum_value", text=attribute["name"])
|
||||
if attribute.enum_value == "IfcBoolean":
|
||||
row.prop(attribute, "bool_value", text="")
|
||||
else:
|
||||
row.prop(attribute, "float_value", text="")
|
||||
if attribute.is_optional:
|
||||
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
|
||||
def draw_boundary_condition_editable_ui(layout: bpy.types.UILayout, props: bpy.types.PropertyGroup) -> None:
|
||||
draw_attributes(props.boundary_condition_attributes, layout)
|
||||
|
||||
|
||||
def draw_boundary_condition_read_only_ui(layout, boundary_condition):
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import bpy
|
||||
import bonsai.bim.helper
|
||||
import bonsai.tool as tool
|
||||
from bonsai.bim.helper import prop_with_search
|
||||
from bonsai.bim.helper import prop_with_search, draw_attributes
|
||||
from bpy.types import Panel, UIList
|
||||
from bonsai.bim.module.system.data import SystemData, ZonesData, ActiveObjectZonesData, ObjectSystemData, PortData
|
||||
|
||||
@@ -113,12 +113,8 @@ class BIM_PT_systems(Panel):
|
||||
if self.props.edited_system_id:
|
||||
self.draw_editable_ui(context)
|
||||
|
||||
def draw_editable_ui(self, context):
|
||||
for attribute in self.props.system_attributes:
|
||||
row = self.layout.row(align=True)
|
||||
row.prop(attribute, "string_value", text=attribute.name)
|
||||
if attribute.is_optional:
|
||||
row.prop(attribute, "is_null", icon="RADIOBUT_OFF" if attribute.is_null else "RADIOBUT_ON", text="")
|
||||
def draw_editable_ui(self, context: bpy.types.Context) -> None:
|
||||
draw_attributes(self.props.system_attributes, self.layout)
|
||||
|
||||
|
||||
class BIM_PT_ports(Panel):
|
||||
|
||||
Reference in New Issue
Block a user