This should be purely an implementation change, for end users there should be no functional difference. The entire key configuration is in one file with ~5000 lines of code. Mostly avoiding code duplication and preserve comments and utility functions from the C code. It's a bit long but for searching and editing it's also convenient to have it all in one file. Notes: - Actual keymap is shared by blender / blender_legacy and stored in `keymap_data/blender_default.py` This only generates JSON-like data to be passed into `keyconfig_import_from_data`, allowing other presets to load and manipulate the default keymap. - Each preset defines 'keyconfig_data' which can be shared between presets. - Some of the utility functions for generating keymap items still need to be ported over to Python. - Some keymap items can be made into loops (marked as TODO). See: D3907
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * ***** BEGIN GPL LICENSE BLOCK *****
 | 
						|
 *
 | 
						|
 * This program is free software; you can redistribute it and/or
 | 
						|
 * modify it under the terms of the GNU General Public License
 | 
						|
 * as published by the Free Software Foundation; either version 2
 | 
						|
 * of the License, or (at your option) any later version.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License
 | 
						|
 * along with this program; if not, write to the Free Software Foundation,
 | 
						|
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
						|
 *
 | 
						|
 * The Original Code is Copyright (C) 2008 Blender Foundation.
 | 
						|
 * All rights reserved.
 | 
						|
 *
 | 
						|
 *
 | 
						|
 * Contributor(s): Blender Foundation
 | 
						|
 *
 | 
						|
 * ***** END GPL LICENSE BLOCK *****
 | 
						|
 */
 | 
						|
 | 
						|
/** \file blender/editors/space_action/action_ops.c
 | 
						|
 *  \ingroup spaction
 | 
						|
 */
 | 
						|
 | 
						|
 | 
						|
#include <stdlib.h>
 | 
						|
#include <math.h>
 | 
						|
 | 
						|
 | 
						|
#include "DNA_space_types.h"
 | 
						|
 | 
						|
 | 
						|
#include "ED_anim_api.h"
 | 
						|
#include "ED_markers.h"
 | 
						|
#include "ED_transform.h"
 | 
						|
#include "ED_object.h"
 | 
						|
#include "ED_select_utils.h"
 | 
						|
 | 
						|
#include "action_intern.h"
 | 
						|
 | 
						|
#include "RNA_access.h"
 | 
						|
 | 
						|
#include "WM_api.h"
 | 
						|
#include "WM_types.h"
 | 
						|
 | 
						|
/* ************************** registration - operator types **********************************/
 | 
						|
 | 
						|
void action_operatortypes(void)
 | 
						|
{
 | 
						|
	/* view */
 | 
						|
	WM_operatortype_append(ACTION_OT_properties);
 | 
						|
 | 
						|
	/* keyframes */
 | 
						|
	/* selection */
 | 
						|
	WM_operatortype_append(ACTION_OT_clickselect);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_all);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_box);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_lasso);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_circle);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_column);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_linked);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_more);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_less);
 | 
						|
	WM_operatortype_append(ACTION_OT_select_leftright);
 | 
						|
 | 
						|
	/* editing */
 | 
						|
	WM_operatortype_append(ACTION_OT_snap);
 | 
						|
	WM_operatortype_append(ACTION_OT_mirror);
 | 
						|
	WM_operatortype_append(ACTION_OT_frame_jump);
 | 
						|
	WM_operatortype_append(ACTION_OT_handle_type);
 | 
						|
	WM_operatortype_append(ACTION_OT_interpolation_type);
 | 
						|
	WM_operatortype_append(ACTION_OT_extrapolation_type);
 | 
						|
	WM_operatortype_append(ACTION_OT_keyframe_type);
 | 
						|
	WM_operatortype_append(ACTION_OT_sample);
 | 
						|
	WM_operatortype_append(ACTION_OT_clean);
 | 
						|
	WM_operatortype_append(ACTION_OT_delete);
 | 
						|
	WM_operatortype_append(ACTION_OT_duplicate);
 | 
						|
	WM_operatortype_append(ACTION_OT_keyframe_insert);
 | 
						|
	WM_operatortype_append(ACTION_OT_copy);
 | 
						|
	WM_operatortype_append(ACTION_OT_paste);
 | 
						|
 | 
						|
	WM_operatortype_append(ACTION_OT_new);
 | 
						|
	WM_operatortype_append(ACTION_OT_unlink);
 | 
						|
 | 
						|
	WM_operatortype_append(ACTION_OT_push_down);
 | 
						|
	WM_operatortype_append(ACTION_OT_stash);
 | 
						|
	WM_operatortype_append(ACTION_OT_stash_and_create);
 | 
						|
 | 
						|
	WM_operatortype_append(ACTION_OT_layer_next);
 | 
						|
	WM_operatortype_append(ACTION_OT_layer_prev);
 | 
						|
 | 
						|
	WM_operatortype_append(ACTION_OT_previewrange_set);
 | 
						|
	WM_operatortype_append(ACTION_OT_view_all);
 | 
						|
	WM_operatortype_append(ACTION_OT_view_selected);
 | 
						|
	WM_operatortype_append(ACTION_OT_view_frame);
 | 
						|
 | 
						|
	WM_operatortype_append(ACTION_OT_markers_make_local);
 | 
						|
}
 | 
						|
 | 
						|
void ED_operatormacros_action(void)
 | 
						|
{
 | 
						|
	wmOperatorType *ot;
 | 
						|
	wmOperatorTypeMacro *otmacro;
 | 
						|
 | 
						|
	ot = WM_operatortype_append_macro("ACTION_OT_duplicate_move", "Duplicate",
 | 
						|
	                                  "Make a copy of all selected keyframes and move them",
 | 
						|
	                                  OPTYPE_UNDO | OPTYPE_REGISTER);
 | 
						|
	WM_operatortype_macro_define(ot, "ACTION_OT_duplicate");
 | 
						|
	otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_transform");
 | 
						|
	RNA_enum_set(otmacro->ptr, "mode", TFM_TIME_DUPLICATE);
 | 
						|
	RNA_enum_set(otmacro->ptr, "proportional", PROP_EDIT_OFF);
 | 
						|
}
 | 
						|
 | 
						|
/* ************************** registration - keymaps **********************************/
 | 
						|
 | 
						|
/* --------------- */
 | 
						|
 | 
						|
void action_keymap(wmKeyConfig *keyconf)
 | 
						|
{
 | 
						|
	/* keymap for all regions */
 | 
						|
	WM_keymap_ensure(keyconf, "Dopesheet Generic", SPACE_ACTION, 0);
 | 
						|
 | 
						|
	/* channels */
 | 
						|
	/* Channels are not directly handled by the Action Editor module, but are inherited from the Animation module.
 | 
						|
	 * All the relevant operations, keymaps, drawing, etc. can therefore all be found in that module instead, as these
 | 
						|
	 * are all used for the Graph-Editor too.
 | 
						|
	 */
 | 
						|
 | 
						|
	/* keyframes */
 | 
						|
	WM_keymap_ensure(keyconf, "Dopesheet", SPACE_ACTION, 0);
 | 
						|
}
 |