File Reading: add revert operator
authorCampbell Barton <ideasman42@gmail.com>
Tue, 28 Jan 2014 18:34:57 +0000 (05:34 +1100)
committerCampbell Barton <ideasman42@gmail.com>
Tue, 28 Jan 2014 18:34:57 +0000 (05:34 +1100)
Patch D247 by Evans Jahja with edits

release/scripts/startup/bl_ui/space_info.py
source/blender/windowmanager/intern/wm_operators.c

index 769cc53d95363fa33265a479db960f9463480e55..bbf6167dda5b4623eae97cfbbdfb2dac33d718a3 100644 (file)
@@ -104,6 +104,7 @@ class INFO_MT_file(Menu):
         layout.operator("wm.read_homefile", text="New", icon='NEW')
         layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER')
         layout.menu("INFO_MT_file_open_recent", icon='OPEN_RECENT')
+        layout.operator("wm.revert_mainfile", icon='FILE_REFRESH')
         layout.operator("wm.recover_last_session", icon='RECOVER_LAST')
         layout.operator("wm.recover_auto_save", text="Recover Auto Save...", icon='RECOVER_AUTO')
 
index ac23983d8edb98f8ed4b82fa62b4ec009980f4d7..6f82361d64e67604c1c1d9ea224448162a54fa0c 100644 (file)
@@ -2309,6 +2309,38 @@ static void WM_OT_open_mainfile(wmOperatorType *ot)
                        "Allow .blend file to execute scripts automatically, default available from system preferences");
 }
 
+
+/* *************** revert file **************** */
+
+static int wm_revert_mainfile_exec(bContext *C, wmOperator *op)
+{
+       bool success;
+
+       success = wm_file_read_opwrap(C, G.main->name, op->reports, true);
+
+       if (success) {
+               return OPERATOR_FINISHED;
+       }
+       else {
+               return OPERATOR_CANCELLED;
+       }
+}
+
+static int wm_revert_mainfile_poll(bContext *UNUSED(C))
+{
+       return G.relbase_valid;
+}
+
+static void WM_OT_revert_mainfile(wmOperatorType *ot)
+{
+       ot->name = "Revert";
+       ot->idname = "WM_OT_revert_mainfile";
+       ot->description = "Reload the saved file";
+
+       ot->exec = wm_revert_mainfile_exec;
+       ot->poll = wm_revert_mainfile_poll;
+}
+
 /* **************** link/append *************** */
 
 static int wm_link_append_poll(bContext *C)
@@ -4367,6 +4399,7 @@ void wm_operatortype_init(void)
        WM_operatortype_append(WM_OT_window_fullscreen_toggle);
        WM_operatortype_append(WM_OT_quit_blender);
        WM_operatortype_append(WM_OT_open_mainfile);
+       WM_operatortype_append(WM_OT_revert_mainfile);
        WM_operatortype_append(WM_OT_link_append);
        WM_operatortype_append(WM_OT_recover_last_session);
        WM_operatortype_append(WM_OT_recover_auto_save);