mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-05 23:41:44 +00:00
cleanup
This commit is contained in:
@@ -144,6 +144,7 @@ classes = [
|
||||
prop.ISODuration,
|
||||
prop.BIMAreaProperties,
|
||||
prop.BIMTabProperties,
|
||||
prop.BIMTabVisibility, # Must be registered before BIMProperties
|
||||
prop.BIMPanelProperties, # Must be registered before BIMProperties
|
||||
prop.BIMProperties,
|
||||
prop.IfcParameter,
|
||||
@@ -285,8 +286,6 @@ def register():
|
||||
bpy.types.Camera.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
|
||||
bpy.types.PointLight.BIMMeshProperties = bpy.props.PointerProperty(type=prop.BIMMeshProperties)
|
||||
|
||||
ui.initialize_panel_properties()
|
||||
|
||||
if hasattr(bpy.types, "UI_MT_button_context_menu"):
|
||||
bpy.types.UI_MT_button_context_menu.append(ui.draw_custom_context_menu)
|
||||
bpy.types.STATUSBAR_HT_header.append(ui.draw_statusbar)
|
||||
|
||||
@@ -33,7 +33,7 @@ import bonsai.bim
|
||||
import bonsai.tool as tool
|
||||
import bonsai.bim.handler
|
||||
from enum import Enum
|
||||
from bonsai.bim.ui import get_all_tab_panels, get_tab_visibility, set_tab_visibility, get_tab_names, get_panel_config, initialize_panel_properties
|
||||
from bonsai.bim.ui import get_all_tab_panels, get_tab_visibility, set_tab_visibility, get_tab_names, get_panel_config, initialize_panel_properties, initialize_tab_visibilities
|
||||
from bpy_extras.io_utils import ImportHelper
|
||||
from bonsai.bim import import_ifc
|
||||
from bonsai.bim.prop import StrProperty
|
||||
@@ -1794,6 +1794,7 @@ class BIM_OT_manage_tab_panels(bpy.types.Operator):
|
||||
context.scene.active_tab_name = self.tab_name
|
||||
context.scene.tab_panels.clear()
|
||||
|
||||
initialize_tab_visibilities()
|
||||
initialize_panel_properties()
|
||||
all_panels = get_all_tab_panels(force_refresh=True)
|
||||
|
||||
|
||||
@@ -530,6 +530,15 @@ class BIMTabProperties(PropertyGroup):
|
||||
inactive_tab: bool
|
||||
|
||||
|
||||
class BIMTabVisibility(PropertyGroup):
|
||||
name: StringProperty(name="Tab Name")
|
||||
is_visible: BoolProperty(name="Is Visible", default=True)
|
||||
|
||||
if TYPE_CHECKING:
|
||||
name: str
|
||||
is_visible: bool
|
||||
|
||||
|
||||
class BIMPanelProperties(PropertyGroup):
|
||||
is_visible_in_tab: BoolProperty(name="Is Visible in Tab", default=True)
|
||||
is_visible_in_bookmarks: BoolProperty(name="Is Visible in Bookmarks", default=True)
|
||||
@@ -624,16 +633,8 @@ class BIMProperties(PropertyGroup):
|
||||
],
|
||||
name="Time Unit",
|
||||
default="HOUR",
|
||||
) tab_visibility_project: BoolProperty(name="Project Tab Visible", default=True)
|
||||
tab_visibility_object: BoolProperty(name="Object Tab Visible", default=True)
|
||||
tab_visibility_geometry: BoolProperty(name="Geometry Tab Visible", default=True)
|
||||
tab_visibility_drawings: BoolProperty(name="Drawings Tab Visible", default=True)
|
||||
tab_visibility_services: BoolProperty(name="Services Tab Visible", default=True)
|
||||
tab_visibility_structure: BoolProperty(name="Structure Tab Visible", default=True)
|
||||
tab_visibility_scheduling: BoolProperty(name="Scheduling Tab Visible", default=True)
|
||||
tab_visibility_fm: BoolProperty(name="FM Tab Visible", default=True)
|
||||
tab_visibility_quality: BoolProperty(name="Quality Tab Visible", default=True)
|
||||
tab_visibility_bookmark: BoolProperty(name="Bookmark Tab Visible", default=True)
|
||||
)
|
||||
tab_visibilities: CollectionProperty(type=BIMTabVisibility, name="Tab Visibilities")
|
||||
panel_properties: CollectionProperty(type=BIMPanelProperties, name="Panel Properties")
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@@ -650,16 +651,7 @@ class BIMProperties(PropertyGroup):
|
||||
volume_unit: str
|
||||
mass_unit: str
|
||||
time_unit: str
|
||||
tab_visibility_project: bool
|
||||
tab_visibility_object: bool
|
||||
tab_visibility_geometry: bool
|
||||
tab_visibility_drawings: bool
|
||||
tab_visibility_services: bool
|
||||
tab_visibility_structure: bool
|
||||
tab_visibility_scheduling: bool
|
||||
tab_visibility_fm: bool
|
||||
tab_visibility_quality: bool
|
||||
tab_visibility_bookmark: bool
|
||||
tab_visibilities: bpy.types.bpy_prop_collection[BIMTabVisibility]
|
||||
panel_properties: bpy.types.bpy_prop_collection[BIMPanelProperties]
|
||||
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ from bonsai import get_debug_info
|
||||
import bonsai.bim
|
||||
import bonsai.tool as tool
|
||||
from ifcopenshell.util.file import IfcHeaderExtractor
|
||||
from bonsai.bim.prop import Attribute
|
||||
from bonsai.bim.prop import Attribute, get_tab
|
||||
from bonsai.bim.module.bsdd.prop import BIMBSDDProperties, BSDDProperty
|
||||
from bonsai.bim.module.pset.prop import IfcProperty
|
||||
from bonsai.bim.module.model.prop import (
|
||||
@@ -62,10 +62,9 @@ if TYPE_CHECKING:
|
||||
from bonsai.bim.module.project.prop import BIMProjectProperties
|
||||
|
||||
|
||||
TAB_NAMES = ["PROJECT", "OBJECT", "GEOMETRY", "DRAWINGS", "SERVICES", "STRUCTURE", "SCHEDULING", "FM", "QUALITY", "BOOKMARK"]
|
||||
|
||||
def get_tab_names():
|
||||
return TAB_NAMES
|
||||
enum_items = get_tab(None, None)
|
||||
return [item[0] for item in enum_items if item is not None]
|
||||
|
||||
def get_panel_tab_name(panel_class):
|
||||
if hasattr(panel_class, 'bim_tab_name'):
|
||||
@@ -82,6 +81,23 @@ def should_show_panel(panel_id, panel_tab_name, context):
|
||||
|
||||
return False
|
||||
|
||||
def initialize_tab_visibilities():
|
||||
"""Initialize tab visibility collection with all tabs set to visible by default."""
|
||||
try:
|
||||
bim_props = tool.Blender.get_bim_props()
|
||||
except (AttributeError, AssertionError):
|
||||
# Context not available during registration, skip initialization
|
||||
return
|
||||
|
||||
if len(bim_props.tab_visibilities) > 0:
|
||||
return
|
||||
|
||||
for tab_name in get_tab_names():
|
||||
tab_vis = bim_props.tab_visibilities.add()
|
||||
tab_vis.name = tab_name
|
||||
tab_vis.is_visible = True
|
||||
|
||||
|
||||
def initialize_panel_properties():
|
||||
try:
|
||||
bim_props = tool.Blender.get_bim_props()
|
||||
@@ -161,14 +177,20 @@ def get_all_tab_panels(force_refresh=False):
|
||||
|
||||
def get_tab_visibility(tab_name):
|
||||
bim_props = tool.Blender.get_bim_props()
|
||||
prop_name = f"tab_visibility_{tab_name.lower()}"
|
||||
return getattr(bim_props, prop_name, True)
|
||||
tab_vis = bim_props.tab_visibilities.get(tab_name)
|
||||
return tab_vis.is_visible if tab_vis else True
|
||||
|
||||
|
||||
def set_tab_visibility(tab_name, visible):
|
||||
bim_props = tool.Blender.get_bim_props()
|
||||
prop_name = f"tab_visibility_{tab_name.lower()}"
|
||||
setattr(bim_props, prop_name, visible)
|
||||
tab_vis = bim_props.tab_visibilities.get(tab_name)
|
||||
if tab_vis:
|
||||
tab_vis.is_visible = visible
|
||||
else:
|
||||
# Create if doesn't exist
|
||||
new_tab = bim_props.tab_visibilities.add()
|
||||
new_tab.name = tab_name
|
||||
new_tab.is_visible = visible
|
||||
|
||||
|
||||
def get_panel_visibility(panel_id, current_tab=None):
|
||||
|
||||
Reference in New Issue
Block a user