Fix T67459: Dope Editor, muting channels with shortcut doesn't work
[blender.git] / source / blender / editors / include / ED_undo.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  */
16
17 /** \file
18  * \ingroup editors
19  */
20
21 #ifndef __ED_UNDO_H__
22 #define __ED_UNDO_H__
23
24 #include "BLI_compiler_attrs.h"
25
26 struct CLG_LogRef;
27 struct Object;
28 struct UndoStack;
29 struct ViewLayer;
30 struct bContext;
31 struct wmOperator;
32 struct wmOperatorType;
33
34 /* undo.c */
35 void ED_undo_push(struct bContext *C, const char *str);
36 void ED_undo_push_op(struct bContext *C, struct wmOperator *op);
37 void ED_undo_grouped_push(struct bContext *C, const char *str);
38 void ED_undo_grouped_push_op(struct bContext *C, struct wmOperator *op);
39 void ED_undo_pop_op(struct bContext *C, struct wmOperator *op);
40 void ED_undo_pop(struct bContext *C);
41 void ED_undo_redo(struct bContext *C);
42 void ED_OT_undo(struct wmOperatorType *ot);
43 void ED_OT_undo_push(struct wmOperatorType *ot);
44 void ED_OT_redo(struct wmOperatorType *ot);
45 void ED_OT_undo_redo(struct wmOperatorType *ot);
46 void ED_OT_undo_history(struct wmOperatorType *ot);
47
48 int ED_undo_operator_repeat(struct bContext *C, struct wmOperator *op);
49 /* convenience since UI callbacks use this mostly*/
50 void ED_undo_operator_repeat_cb(struct bContext *C, void *arg_op, void *arg_unused);
51 void ED_undo_operator_repeat_cb_evt(struct bContext *C, void *arg_op, int arg_unused);
52
53 bool ED_undo_is_valid(const struct bContext *C, const char *undoname);
54
55 bool ED_undo_is_memfile_compatible(const struct bContext *C);
56
57 /* Unfortunate workaround for limits mixing undo systems. */
58 bool ED_undo_is_legacy_compatible_for_property(struct bContext *C, struct ID *id);
59
60 void ED_undo_object_editmode_restore_helper(struct bContext *C,
61                                             struct Object **object_array,
62                                             uint object_array_len,
63                                             uint object_array_stride);
64
65 struct UndoStack *ED_undo_stack_get(void);
66
67 /* helpers */
68 void ED_undo_object_set_active_or_warn(struct ViewLayer *view_layer,
69                                        struct Object *ob,
70                                        const char *info,
71                                        struct CLG_LogRef *log);
72
73 /* undo_system_types.c */
74 void ED_undosys_type_init(void);
75 void ED_undosys_type_free(void);
76
77 /* memfile_undo.c */
78 struct MemFile *ED_undosys_stack_memfile_get_active(struct UndoStack *ustack);
79
80 #endif /* __ED_UNDO_H__ */