doxygen: blender/editors tagged.
[blender-staging.git] / source / blender / editors / util / undo.c
index a992e33e7d6b2e5326e7a4aec2b962d087c9f728..b366a8460fcb71b7927a182cb3a4b044a3d8e685 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
  * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file blender/editors/util/undo.c
+ *  \ingroup edutil
+ */
+
+
 
 #include <stdlib.h>
 #include <string.h>
 #include "WM_api.h"
 #include "WM_types.h"
 
+#include "RNA_access.h"
+#include "RNA_define.h"
 
 #include "util_intern.h"
 
+#define MAXUNDONAME 64 /* XXX, make common define */
+
 /* ***************** generic undo system ********************* */
 
 void ED_undo_push(bContext *C, const char *str)
@@ -252,6 +261,14 @@ static int ed_undo_exec(bContext *C, wmOperator *UNUSED(op))
        return ed_undo_step(C, 1, NULL);
 }
 
+static int ed_undo_push_exec(bContext *C, wmOperator *op)
+{
+       char str[MAXUNDONAME];
+       RNA_string_get(op->ptr, "message", str);
+       ED_undo_push(C, str);
+       return OPERATOR_FINISHED;
+}
+
 static int ed_redo_exec(bContext *C, wmOperator *UNUSED(op))
 {
        return ed_undo_step(C, -1, NULL);
@@ -298,6 +315,19 @@ void ED_OT_undo(wmOperatorType *ot)
        ot->poll= ED_operator_screenactive;
 }
 
+void ED_OT_undo_push(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Undo Push";
+       ot->description= "Add an undo state (internal use only)";
+       ot->idname= "ED_OT_undo_push";
+       
+       /* api callbacks */
+       ot->exec= ed_undo_push_exec;
+
+       RNA_def_string(ot->srna, "message", "Add an undo step *function may be moved*", MAXUNDONAME, "Undo Message", "");
+}
+
 void ED_OT_redo(wmOperatorType *ot)
 {
        /* identifiers */