diff --git a/src/blenderbim/blenderbim/bim/module/drawing/data.py b/src/blenderbim/blenderbim/bim/module/drawing/data.py index 635346c291..04ab5925ef 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/data.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/data.py @@ -89,5 +89,7 @@ class DrawingsData: def location_hint(cls): if bpy.context.scene.DocProperties.target_view == "PLAN_VIEW": results = [("0", "Origin", "")] - results.extend([(str(s.id()), s.Name or "Unnamed", "") for s in tool.Ifc.get().by_type("IfcBuildingStorey")]) + results.extend( + [(str(s.id()), s.Name or "Unnamed", "") for s in tool.Ifc.get().by_type("IfcBuildingStorey")] + ) return results diff --git a/src/blenderbim/blenderbim/bim/module/project/data.py b/src/blenderbim/blenderbim/bim/module/project/data.py index 922f5501a9..b4b91007c0 100644 --- a/src/blenderbim/blenderbim/bim/module/project/data.py +++ b/src/blenderbim/blenderbim/bim/module/project/data.py @@ -32,7 +32,11 @@ class ProjectData: @classmethod def load(cls): - cls.data = {"export_schema": cls.get_export_schema(), "template_file": cls.template_file()} + cls.data = { + "export_schema": cls.get_export_schema(), + "template_file": cls.template_file(), + "last_saved": cls.last_saved(), + } cls.is_loaded = True @classmethod @@ -45,3 +49,15 @@ class ProjectData: results = [("0", "Blank Project", "")] results.extend([(f, f.replace(".ifc", ""), "") for f in files if ".ifc" in f]) return results + + @classmethod + def last_saved(cls): + ifc = tool.Ifc.get() + if not ifc: + return "" + try: + save_datetime = ifc.wrapped_data.header.file_name.time_stamp + save_date, save_time = save_datetime.split("T") + return f"{save_date} {':'.join(save_time.split(':')[0:2])}" + except: + return "" diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index bb94c0f174..cd962563d5 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -94,8 +94,7 @@ class BIM_PT_project(Panel): props = context.scene.BIMProperties pprops = context.scene.BIMProjectProperties row = self.layout.row(align=True) - row.label(text="IFC Filename", icon="FILE") - row.label(text=os.path.basename(props.ifc_file) or "No File Found") + row.label(text=os.path.basename(props.ifc_file) or "No File Found", icon="FILE") if IfcStore.get_file(): row.prop(pprops, "is_authoring", icon="MODIFIER", text="") @@ -136,12 +135,21 @@ class BIM_PT_project(Panel): row = self.layout.row(align=True) row.label(text="File Not Loaded", icon="ERROR") + if props.ifc_file: + row = self.layout.row(align=True) + row.label(text="Saved", icon="EXPORT") + row.label(text=ProjectData.data["last_saved"]) + + row = self.layout.row(align=True) + row.prop(props, "ifc_file", text="") + row.operator("bim.reload_ifc_file", icon="FILE_REFRESH", text="") + row.operator("bim.select_ifc_file", icon="FILE_FOLDER", text="") + row = self.layout.row(align=True) - row.prop(props, "ifc_file", text="") - row.operator("bim.reload_ifc_file", icon="FILE_REFRESH", text="") - op = row.operator("export_ifc.bim", icon="FILE_TICK", text="") + op = row.operator("export_ifc.bim", icon="EXPORT", text="Save Project") + op.should_save_as = False + op = row.operator("export_ifc.bim", icon="FILE_TICK", text="Save As") op.should_save_as = True - row.operator("bim.select_ifc_file", icon="FILE_FOLDER", text="") def draw_create_project_ui(self, context): props = context.scene.BIMProperties