Logic Editor: clear properties operator + logics in the object menu

clear properties operator
- now it's not part of the copy properties anymore (Matt's suggestion).

If anyone want to change the menu, please help yourself (renaming, putting in it's own submenu, making it invisible when mode is not Game ..)
This commit is contained in:
Dalai Felinto 2010-06-03 06:41:24 +00:00
parent f5951ac2ea
commit 3b6aa5b6a5
4 changed files with 52 additions and 7 deletions

@ -675,7 +675,11 @@ class VIEW3D_MT_object(bpy.types.Menu):
layout.menu("VIEW3D_MT_object_track")
layout.menu("VIEW3D_MT_object_group")
layout.menu("VIEW3D_MT_object_constraints")
layout.separator()
layout.menu("VIEW3D_MT_object_game_properties")
layout.menu("VIEW3D_MT_object_game_logicbricks")
layout.separator()
@ -853,8 +857,18 @@ class VIEW3D_MT_object_game_properties(bpy.types.Menu):
layout.operator("object.game_property_copy", text="Replace").operation="REPLACE"
layout.operator("object.game_property_copy", text="Merge").operation="MERGE"
# layout.operator("object.game_property_copy").operation="CLEAR" doesn't really belong as part of copy...
layout.operator_menu_enum("object.game_property_copy", "property", text="Copy...")
layout.separator()
layout.operator("object.game_property_clear")
class VIEW3D_MT_object_game_logicbricks(bpy.types.Menu):
bl_label = "Logic Bricks"
def draw(self, context):
layout = self.layout
layout.operator("object.logic_bricks_copy", text="Copy")
# ********** Vertex paint menu **********
@ -2222,10 +2236,11 @@ classes = [
VIEW3D_MT_object_track,
VIEW3D_MT_object_group,
VIEW3D_MT_object_constraints,
VIEW3D_MT_object_game_properties,
VIEW3D_MT_object_showhide,
VIEW3D_MT_make_single_user,
VIEW3D_MT_make_links,
VIEW3D_MT_object_game_properties,
VIEW3D_MT_object_game_logicbricks,
VIEW3D_MT_hook,
VIEW3D_MT_vertex_group,

@ -2151,6 +2151,7 @@ static int game_property_new(bContext *C, wmOperator *op)
BLI_addtail(&ob->prop, prop);
unique_property(NULL, prop, 0); // make_unique_prop_names(prop->name);
WM_event_add_notifier(C, NC_LOGIC, NULL);
return OPERATOR_FINISHED;
}
@ -2183,6 +2184,8 @@ static int game_property_remove(bContext *C, wmOperator *op)
if(prop) {
BLI_remlink(&ob->prop, prop);
free_property(prop);
WM_event_add_notifier(C, NC_LOGIC, NULL);
return OPERATOR_FINISHED;
}
else {
@ -2208,13 +2211,11 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot)
#define COPY_PROPERTIES_REPLACE 1
#define COPY_PROPERTIES_MERGE 2
#define COPY_PROPERTIES_CLEAR 3
#define COPY_PROPERTIES_COPY 4
#define COPY_PROPERTIES_COPY 3
static EnumPropertyItem game_properties_copy_operations[] ={
{COPY_PROPERTIES_REPLACE, "REPLACE", 0, "Replace Properties", ""},
{COPY_PROPERTIES_MERGE, "MERGE", 0, "Merge Properties", ""},
{COPY_PROPERTIES_CLEAR, "CLEAR", 0, "Clear All", ""},
{COPY_PROPERTIES_COPY, "COPY", 0, "Copy a Property", ""},
{0, NULL, 0, NULL, NULL}};
@ -2264,7 +2265,7 @@ static int game_property_copy_exec(bContext *C, wmOperator *op)
} CTX_DATA_END;
}
}
else if (ELEM3(type, COPY_PROPERTIES_REPLACE, COPY_PROPERTIES_MERGE, COPY_PROPERTIES_CLEAR)) {
else if (ELEM(type, COPY_PROPERTIES_REPLACE, COPY_PROPERTIES_MERGE)) {
CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) {
if (ob != ob_iter) {
if (ob->data != ob_iter->data){
@ -2272,7 +2273,7 @@ static int game_property_copy_exec(bContext *C, wmOperator *op)
for(prop = ob->prop.first; prop; prop= prop->next ) {
set_ob_property(ob_iter, prop);
}
} else /* replace or clear */
} else /* replace */
copy_properties( &ob_iter->prop, &ob->prop );
}
}
@ -2303,6 +2304,33 @@ void OBJECT_OT_game_property_copy(wmOperatorType *ot)
ot->prop=prop;
}
static int game_property_clear_exec(bContext *C, wmOperator *op)
{
Object *ob=ED_object_active_context(C);
bProperty *prop;
CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) {
free_properties(&ob_iter->prop);
}
CTX_DATA_END;
WM_event_add_notifier(C, NC_LOGIC, NULL);
return OPERATOR_FINISHED;
}
void OBJECT_OT_game_property_clear(wmOperatorType *ot)
{
/* identifiers */
ot->name= "Clear Game Property";
ot->idname= "OBJECT_OT_game_property_clear";
/* api callbacks */
ot->exec= game_property_clear_exec;
ot->poll= ED_operator_object_active_editable;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/************************ Copy Logic Bricks ***********************/
static int logicbricks_copy_exec(bContext *C, wmOperator *op)

@ -88,6 +88,7 @@ void OBJECT_OT_paths_clear(struct wmOperatorType *ot);
void OBJECT_OT_game_property_new(struct wmOperatorType *ot);
void OBJECT_OT_game_property_remove(struct wmOperatorType *ot);
void OBJECT_OT_game_property_copy(struct wmOperatorType *ot);
void OBJECT_OT_game_property_clear(struct wmOperatorType *ot);
void OBJECT_OT_logic_bricks_copy(struct wmOperatorType *ot);
/* object_select.c */

@ -184,6 +184,7 @@ void ED_operatortypes_object(void)
WM_operatortype_append(OBJECT_OT_game_property_new);
WM_operatortype_append(OBJECT_OT_game_property_remove);
WM_operatortype_append(OBJECT_OT_game_property_copy);
WM_operatortype_append(OBJECT_OT_game_property_clear);
WM_operatortype_append(OBJECT_OT_logic_bricks_copy);
WM_operatortype_append(OBJECT_OT_shape_key_add);