Blender  V2.93
object_ops.c
Go to the documentation of this file.
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  * The Original Code is Copyright (C) 2008 Blender Foundation.
17  * All rights reserved.
18  */
19 
24 #include <math.h>
25 #include <stdlib.h>
26 
27 #include "DNA_object_types.h"
28 
29 #include "BKE_context.h"
30 
31 #include "RNA_access.h"
32 
33 #include "WM_api.h"
34 #include "WM_types.h"
35 
36 #include "ED_object.h"
37 
38 #include "object_intern.h"
39 
40 #include "MOD_gpencil_lineart.h"
41 
42 /* ************************** registration **********************************/
43 
45 {
54 
67 
69 
82 
92 
98 
124 
148 
149  /* grease pencil modifiers */
158 
159  /* grease pencil line art */
161 
162  /* Shader FX. */
169 
174 
196 
226 
234 
236 
239 
246 
252 
260 
266 
268 
272 
276 
279 
281 }
282 
284 {
286  wmOperatorTypeMacro *otmacro;
287 
288  ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move",
289  "Duplicate Objects",
290  "Duplicate selected objects and move them",
292  if (ot) {
293  WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
294  otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
295  RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false);
296  }
297 
298  /* grr, should be able to pass options on... */
299  ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move_linked",
300  "Duplicate Linked",
301  "Duplicate selected objects and move them",
303  if (ot) {
304  otmacro = WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
305  RNA_boolean_set(otmacro->ptr, "linked", true);
306  otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
307  RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false);
308  }
309 }
310 
312 {
314  return (!ob || ob->mode == OB_MODE_OBJECT);
315 }
316 
318 {
319  wmKeyMap *keymap;
320 
321  /* Objects, Regardless of Mode -------------------------------------------------- */
322  keymap = WM_keymap_ensure(keyconf, "Object Non-modal", 0, 0);
323 
324  /* Object Mode ---------------------------------------------------------------- */
325  /* Note: this keymap gets disabled in non-objectmode, */
326  keymap = WM_keymap_ensure(keyconf, "Object Mode", 0, 0);
327  keymap->poll = object_mode_poll;
328 }
struct Object * CTX_data_active_object(const bContext *C)
Definition: context.c:1279
@ OB_MODE_OBJECT
Object is a sort of wrapper for general info.
#define C
Definition: RandGen.cpp:39
@ OPTYPE_UNDO
Definition: WM_types.h:155
@ OPTYPE_REGISTER
Definition: WM_types.h:153
void WM_operatortypes_lineart(void)
Definition: lineart_ops.c:459
void OBJECT_OT_drop_named_image(wmOperatorType *ot)
Definition: object_add.c:1253
void OBJECT_OT_convert(wmOperatorType *ot)
Definition: object_add.c:3192
void OBJECT_OT_speaker_add(wmOperatorType *ot)
Definition: object_add.c:1844
void OBJECT_OT_metaball_add(wmOperatorType *ot)
Definition: object_add.c:1017
void OBJECT_OT_add_named(wmOperatorType *ot)
Definition: object_add.c:3506
void OBJECT_OT_duplicate(wmOperatorType *ot)
Definition: object_add.c:3403
void OBJECT_OT_effector_add(wmOperatorType *ot)
Definition: object_add.c:885
void OBJECT_OT_light_add(wmOperatorType *ot)
Definition: object_add.c:1587
void OBJECT_OT_delete(wmOperatorType *ot)
Definition: object_add.c:2082
void OBJECT_OT_empty_add(wmOperatorType *ot)
Definition: object_add.c:1183
void OBJECT_OT_lightprobe_add(wmOperatorType *ot)
Definition: object_add.c:767
void OBJECT_OT_duplicates_make_real(wmOperatorType *ot)
Definition: object_add.c:2489
void OBJECT_OT_text_add(wmOperatorType *ot)
Definition: object_add.c:1068
void OBJECT_OT_add(wmOperatorType *ot)
Definition: object_add.c:698
void OBJECT_OT_pointcloud_add(wmOperatorType *ot)
Definition: object_add.c:1934
void OBJECT_OT_hair_add(wmOperatorType *ot)
Definition: object_add.c:1889
void OBJECT_OT_join(wmOperatorType *ot)
Definition: object_add.c:3613
void OBJECT_OT_collection_instance_add(wmOperatorType *ot)
Definition: object_add.c:1689
void OBJECT_OT_armature_add(wmOperatorType *ot)
Definition: object_add.c:1139
void OBJECT_OT_camera_add(wmOperatorType *ot)
Definition: object_add.c:944
void OBJECT_OT_join_shapes(wmOperatorType *ot)
Definition: object_add.c:3670
void OBJECT_OT_gpencil_add(wmOperatorType *ot)
Definition: object_add.c:1489
void OBJECT_OT_data_instance_add(wmOperatorType *ot)
Definition: object_add.c:1778
void OBJECT_OT_bake_image(wmOperatorType *ot)
Definition: object_bake.c:639
void OBJECT_OT_bake(wmOperatorType *ot)
void COLLECTION_OT_create(wmOperatorType *ot)
void COLLECTION_OT_objects_remove(wmOperatorType *ot)
void OBJECT_OT_collection_link(wmOperatorType *ot)
void COLLECTION_OT_objects_remove_all(wmOperatorType *ot)
void OBJECT_OT_collection_unlink(wmOperatorType *ot)
void OBJECT_OT_collection_objects_select(wmOperatorType *ot)
void COLLECTION_OT_objects_remove_active(wmOperatorType *ot)
void OBJECT_OT_collection_add(wmOperatorType *ot)
void OBJECT_OT_collection_remove(wmOperatorType *ot)
void COLLECTION_OT_objects_add_active(wmOperatorType *ot)
void CONSTRAINT_OT_move_to_index(wmOperatorType *ot)
void OBJECT_OT_constraints_copy(wmOperatorType *ot)
void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot)
void CONSTRAINT_OT_delete(wmOperatorType *ot)
void CONSTRAINT_OT_stretchto_reset(wmOperatorType *ot)
void POSE_OT_constraints_copy(wmOperatorType *ot)
void CONSTRAINT_OT_objectsolver_set_inverse(wmOperatorType *ot)
void OBJECT_OT_constraints_clear(wmOperatorType *ot)
void CONSTRAINT_OT_limitdistance_reset(wmOperatorType *ot)
void CONSTRAINT_OT_move_down(wmOperatorType *ot)
void POSE_OT_constraints_clear(wmOperatorType *ot)
void OBJECT_OT_constraint_add(wmOperatorType *ot)
void CONSTRAINT_OT_move_up(wmOperatorType *ot)
void POSE_OT_constraint_add_with_targets(wmOperatorType *ot)
void POSE_OT_constraint_add(wmOperatorType *ot)
void POSE_OT_ik_add(wmOperatorType *ot)
void POSE_OT_ik_clear(wmOperatorType *ot)
void CONSTRAINT_OT_followpath_path_animate(wmOperatorType *ot)
void CONSTRAINT_OT_childof_set_inverse(wmOperatorType *ot)
void CONSTRAINT_OT_objectsolver_clear_inverse(wmOperatorType *ot)
void CONSTRAINT_OT_childof_clear_inverse(wmOperatorType *ot)
void OBJECT_OT_datalayout_transfer(wmOperatorType *ot)
void OBJECT_OT_data_transfer(wmOperatorType *ot)
void OBJECT_OT_move_to_collection(wmOperatorType *ot)
Definition: object_edit.c:2039
void OBJECT_OT_mode_set_with_submode(wmOperatorType *ot)
Definition: object_edit.c:1756
void OBJECT_OT_hide_view_clear(wmOperatorType *ot)
Definition: object_edit.c:285
void OBJECT_OT_hide_collection(wmOperatorType *ot)
Definition: object_edit.c:465
void OBJECT_OT_paths_update(wmOperatorType *ot)
Definition: object_edit.c:1311
void OBJECT_OT_paths_range_update(wmOperatorType *ot)
Definition: object_edit.c:1433
void OBJECT_OT_posemode_toggle(wmOperatorType *ot)
Definition: object_edit.c:1029
void OBJECT_OT_link_to_collection(wmOperatorType *ot)
Definition: object_edit.c:2078
void OBJECT_OT_hide_view_set(wmOperatorType *ot)
Definition: object_edit.c:343
void OBJECT_OT_paths_clear(wmOperatorType *ot)
Definition: object_edit.c:1387
void OBJECT_OT_forcefield_toggle(wmOperatorType *ot)
Definition: object_edit.c:1095
void OBJECT_OT_editmode_toggle(wmOperatorType *ot)
Definition: object_edit.c:938
void OBJECT_OT_shade_flat(wmOperatorType *ot)
Definition: object_edit.c:1544
void OBJECT_OT_shade_smooth(wmOperatorType *ot)
Definition: object_edit.c:1559
void OBJECT_OT_paths_calculate(wmOperatorType *ot)
Definition: object_edit.c:1242
void OBJECT_OT_mode_set(wmOperatorType *ot)
Definition: object_edit.c:1731
void OBJECT_OT_face_map_remove_from(struct wmOperatorType *ot)
void OBJECT_OT_face_map_remove(struct wmOperatorType *ot)
void OBJECT_OT_face_map_move(wmOperatorType *ot)
void OBJECT_OT_face_map_select(struct wmOperatorType *ot)
void OBJECT_OT_face_map_add(struct wmOperatorType *ot)
void OBJECT_OT_face_map_assign(struct wmOperatorType *ot)
void OBJECT_OT_face_map_deselect(struct wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_copy(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_add(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_up(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_down(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_copy_to_selected(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_to_index(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_remove(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_apply(wmOperatorType *ot)
void OBJECT_OT_hook_add_newob(wmOperatorType *ot)
Definition: object_hook.c:691
void OBJECT_OT_hook_recenter(wmOperatorType *ot)
Definition: object_hook.c:859
void OBJECT_OT_hook_assign(wmOperatorType *ot)
Definition: object_hook.c:920
void OBJECT_OT_hook_select(wmOperatorType *ot)
Definition: object_hook.c:967
void OBJECT_OT_hook_reset(wmOperatorType *ot)
Definition: object_hook.c:808
void OBJECT_OT_hook_add_selob(wmOperatorType *ot)
Definition: object_hook.c:652
void OBJECT_OT_hook_remove(wmOperatorType *ot)
Definition: object_hook.c:760
void OBJECT_OT_vertex_group_sort(struct wmOperatorType *ot)
void OBJECT_OT_make_local(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_copy_to_selected(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_clear(struct wmOperatorType *ot)
void TRANSFORM_OT_vertex_random(struct wmOperatorType *ot)
void OBJECT_OT_location_clear(struct wmOperatorType *ot)
void OBJECT_OT_select_linked(struct wmOperatorType *ot)
void OBJECT_OT_transform_axis_target(struct wmOperatorType *ot)
void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot)
void OBJECT_OT_multires_external_save(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_quantize(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_fix(struct wmOperatorType *ot)
void OBJECT_OT_track_clear(struct wmOperatorType *ot)
void OBJECT_OT_quadriflow_remesh(struct wmOperatorType *ot)
void OBJECT_OT_explode_refresh(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_up(struct wmOperatorType *ot)
void OBJECT_OT_volume_import(struct wmOperatorType *ot)
void OBJECT_OT_scale_clear(struct wmOperatorType *ot)
void OBJECT_OT_laplaciandeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_to_index(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_deselect(struct wmOperatorType *ot)
void OBJECT_OT_skin_root_mark(struct wmOperatorType *ot)
void OBJECT_OT_skin_radii_equalize(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_move(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_smooth(struct wmOperatorType *ot)
void OBJECT_OT_visual_transform_apply(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_mirror(struct wmOperatorType *ot)
void OBJECT_OT_multires_external_pack(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_limit_total(struct wmOperatorType *ot)
void OBJECT_OT_origin_set(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_move(struct wmOperatorType *ot)
void OBJECT_OT_select_random(struct wmOperatorType *ot)
void OBJECT_OT_modifier_copy(struct wmOperatorType *ot)
void OBJECT_OT_transfer_mode(struct wmOperatorType *ot)
Definition: object_modes.c:545
void OBJECT_OT_select_more(struct wmOperatorType *ot)
void OBJECT_OT_parent_clear(struct wmOperatorType *ot)
void OBJECT_OT_modifier_apply_as_shapekey(wmOperatorType *ot)
void OBJECT_OT_vertex_group_select(struct wmOperatorType *ot)
void OBJECT_OT_modifier_remove(struct wmOperatorType *ot)
void OBJECT_OT_voxel_size_edit(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_remove(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_normalize_all(struct wmOperatorType *ot)
void OBJECT_OT_make_single_user(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_copy(struct wmOperatorType *ot)
void OBJECT_OT_make_links_scene(struct wmOperatorType *ot)
void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_set_active(struct wmOperatorType *ot)
void OBJECT_OT_skin_armature_create(struct wmOperatorType *ot)
void OBJECT_OT_surfacedeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_transform_apply(struct wmOperatorType *ot)
void OBJECT_OT_modifier_add(struct wmOperatorType *ot)
void OBJECT_OT_select_all(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_retime(struct wmOperatorType *ot)
void OBJECT_OT_origin_clear(struct wmOperatorType *ot)
void OBJECT_OT_correctivesmooth_bind(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_delete(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_copy_to_linked(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_normalize(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_copy(struct wmOperatorType *ot)
void OBJECT_OT_select_mirror(struct wmOperatorType *ot)
void OBJECT_OT_parent_set(struct wmOperatorType *ot)
void OBJECT_OT_modifier_convert(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_down(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_add(struct wmOperatorType *ot)
void OBJECT_OT_voxel_remesh(struct wmOperatorType *ot)
void OBJECT_OT_skin_loose_mark_clear(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_normalize_active_vertex(struct wmOperatorType *ot)
void OBJECT_OT_make_override_library(struct wmOperatorType *ot)
void OBJECT_OT_select_grouped(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_copy(struct wmOperatorType *ot)
void OBJECT_OT_modifier_apply(struct wmOperatorType *ot)
void OBJECT_OT_modifier_set_active(struct wmOperatorType *ot)
void OBJECT_OT_proxy_make(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_remove(struct wmOperatorType *ot)
void OBJECT_OT_modifier_move_up(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_add(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_remove_from(struct wmOperatorType *ot)
void OBJECT_OT_modifier_copy_to_selected(struct wmOperatorType *ot)
void OBJECT_OT_rotation_clear(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_assign(struct wmOperatorType *ot)
void OBJECT_OT_select_by_type(struct wmOperatorType *ot)
void TRANSFORM_OT_vertex_warp(struct wmOperatorType *ot)
Definition: object_warp.c:259
void OBJECT_OT_modifier_move_down(struct wmOperatorType *ot)
void OBJECT_OT_multires_rebuild_subdiv(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_remove(struct wmOperatorType *ot)
void OBJECT_OT_parent_no_inverse_set(struct wmOperatorType *ot)
void OBJECT_OT_vertex_parent_set(struct wmOperatorType *ot)
void OBJECT_OT_select_same_collection(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_add(struct wmOperatorType *ot)
void OBJECT_OT_make_links_data(struct wmOperatorType *ot)
void OBJECT_OT_volume_add(struct wmOperatorType *ot)
Definition: object_volume.c:70
void OBJECT_OT_track_set(struct wmOperatorType *ot)
void OBJECT_OT_select_less(struct wmOperatorType *ot)
void OBJECT_OT_convert_proxy_to_override(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_lock(struct wmOperatorType *ot)
void OBJECT_OT_unlink_data(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_paste(struct wmOperatorType *ot)
void OBJECT_OT_ocean_bake(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot)
void OBJECT_OT_multires_reshape(struct wmOperatorType *ot)
void OBJECT_OT_modifier_move_to_index(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_assign_new(struct wmOperatorType *ot)
void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot)
void OBJECT_OT_drop_named_material(struct wmOperatorType *ot)
void OBJECT_OT_multires_unsubdivide(struct wmOperatorType *ot)
void OBJECT_OT_multires_base_apply(struct wmOperatorType *ot)
void ED_operatortypes_object(void)
Definition: object_ops.c:44
void ED_keymap_object(wmKeyConfig *keyconf)
Definition: object_ops.c:317
void ED_operatormacros_object(void)
Definition: object_ops.c:283
static bool object_mode_poll(bContext *C)
Definition: object_ops.c:311
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
Definition: rna_access.c:6272
bool(* poll)(struct bContext *)
wmOperatorType * ot
Definition: wm_files.c:3156
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
Definition: wm_keymap.c:852
wmOperatorType * WM_operatortype_append_macro(const char *idname, const char *name, const char *description, int flag)
wmOperatorTypeMacro * WM_operatortype_macro_define(wmOperatorType *ot, const char *idname)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))