diff --git a/src/blenderbim/blenderbim/bim/module/project/__init__.py b/src/blenderbim/blenderbim/bim/module/project/__init__.py index 383b648053..5adcab8073 100644 --- a/src/blenderbim/blenderbim/bim/module/project/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/project/__init__.py @@ -37,6 +37,7 @@ classes = ( operator.LoadProjectElements, operator.NewProject, operator.RefreshLibrary, + operator.RevertProject, operator.RewindLibrary, operator.SaveLibraryFile, operator.SelectLibraryFile, diff --git a/src/blenderbim/blenderbim/bim/module/project/operator.py b/src/blenderbim/blenderbim/bim/module/project/operator.py index ec431b80bb..7e8a9b821c 100644 --- a/src/blenderbim/blenderbim/bim/module/project/operator.py +++ b/src/blenderbim/blenderbim/bim/module/project/operator.py @@ -676,6 +676,23 @@ class UnloadProject(bpy.types.Operator): return {"FINISHED"} +class RevertProject(bpy.types.Operator, IFCFileSelector): + bl_idname = "bim.revert_project" + bl_label = "Revert IFC Project" + bl_options = {"REGISTER", "UNDO"} + bl_description = "Reload currently opened IFC project discarding all unsaved changes" + + @classmethod + def poll(cls, context): + if not context.scene.BIMProperties.ifc_file: + cls.poll_message_set("IFC project need to be loaded and saved on the disk.") + return False + return True + + def execute(self, context): + bpy.ops.bim.load_project(should_start_fresh_session=True, filepath=context.scene.BIMProperties.ifc_file) + + class LoadProjectElements(bpy.types.Operator): bl_idname = "bim.load_project_elements" bl_label = "Load Project Elements" diff --git a/src/blenderbim/blenderbim/bim/module/project/ui.py b/src/blenderbim/blenderbim/bim/module/project/ui.py index 0797238bd1..d2bc4feb8b 100644 --- a/src/blenderbim/blenderbim/bim/module/project/ui.py +++ b/src/blenderbim/blenderbim/bim/module/project/ui.py @@ -73,6 +73,8 @@ def file_menu(self, context): op = self.layout.operator("export_ifc.bim", text="Save IFC Project As...") op.should_save_as = True self.layout.separator() + self.layout.operator("bim.revert_project") + self.layout.separator() class BIM_PT_project(Panel):