[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27821] trunk/blender: Fix [#21708] Copy/ Paste Texture channels for Lamps/World not working

Matt Ebb matt at mke3.net
Mon Mar 29 07:37:35 CEST 2010


Revision: 27821
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27821
Author:   broken
Date:     2010-03-29 07:37:34 +0200 (Mon, 29 Mar 2010)

Log Message:
-----------
Fix [#21708] Copy/Paste Texture channels for Lamps/World not working

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_texture.py
    trunk/blender/source/blender/blenkernel/intern/material.c
    trunk/blender/source/blender/editors/include/ED_render.h
    trunk/blender/source/blender/editors/render/render_intern.h
    trunk/blender/source/blender/editors/render/render_ops.c
    trunk/blender/source/blender/editors/render/render_shading.c
    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c

Modified: trunk/blender/release/scripts/ui/properties_texture.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_texture.py	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/release/scripts/ui/properties_texture.py	2010-03-29 05:37:34 UTC (rev 27821)
@@ -29,8 +29,8 @@
     def draw(self, context):
         layout = self.layout
 
-        layout.operator("material.mtex_copy", icon='COPYDOWN')
-        layout.operator("material.mtex_paste", icon='PASTEDOWN')
+        layout.operator("texture.slot_copy", icon='COPYDOWN')
+        layout.operator("texture.slot_paste", icon='PASTEDOWN')
 
 
 class TEXTURE_MT_envmap_specials(bpy.types.Menu):

Modified: trunk/blender/source/blender/blenkernel/intern/material.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/material.c	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/blenkernel/intern/material.c	2010-03-29 05:37:34 UTC (rev 27821)
@@ -1345,70 +1345,3 @@
 	scrarea_queue_winredraw(curarea);
 	*/
 }
-
-
-static short mtexcopied=0; /* must be reset on file load */
-static MTex mtexcopybuf;
-
-void clear_mat_mtex_copybuf(void)
-{	/* use for file reload */
-	mtexcopied= 0;
-}
-
-void copy_mat_mtex_copybuf(ID *id)
-{
-	MTex **mtex= NULL;
-
-	switch(GS(id->name)) {
-	case ID_MA:
-		mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]);
-		break;
-	case ID_LA:
-		// la->mtex[(int)la->texact] // TODO
-		break;
-	case ID_WO:
-		// mtex= wrld->mtex[(int)wrld->texact]; // TODO
-		break;
-	}
-
-	if(mtex && *mtex) {
-		memcpy(&mtexcopybuf, *mtex, sizeof(MTex));
-		mtexcopied= 1;
-	}
-	else {
-		mtexcopied= 0;
-	}
-}
-
-void paste_mat_mtex_copybuf(ID *id)
-{
-	MTex **mtex= NULL;
-
-	if(mtexcopied == 0 || mtexcopybuf.tex==NULL)
-		return;
-
-	switch(GS(id->name)) {
-	case ID_MA:
-		mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]);
-		break;
-	case ID_LA:
-		// la->mtex[(int)la->texact] // TODO
-		break;
-	case ID_WO:
-		// mtex= wrld->mtex[(int)wrld->texact]; // TODO
-		break;
-	}
-
-	if(mtex) {
-		if(*mtex==NULL) {
-			*mtex= MEM_mallocN(sizeof(MTex), "mtex copy");
-		}
-		else if((*mtex)->tex) {
-			(*mtex)->tex->id.us--;
-		}
-
-		memcpy(*mtex, &mtexcopybuf, sizeof(MTex));
-
-		id_us_plus((ID *)mtexcopybuf.tex);
-	}
-}

Modified: trunk/blender/source/blender/editors/include/ED_render.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_render.h	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/editors/include/ED_render.h	2010-03-29 05:37:34 UTC (rev 27821)
@@ -81,4 +81,6 @@
 
 void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void *slot, rcti *rect);
 
+void ED_render_clear_mtex_copybuf(void);
+
 #endif

Modified: trunk/blender/source/blender/editors/render/render_intern.h
===================================================================
--- trunk/blender/source/blender/editors/render/render_intern.h	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/editors/render/render_intern.h	2010-03-29 05:37:34 UTC (rev 27821)
@@ -48,12 +48,12 @@
 void MATERIAL_OT_copy(struct wmOperatorType *ot);
 void MATERIAL_OT_paste(struct wmOperatorType *ot);
 
-void MATERIAL_OT_mtex_copy(struct wmOperatorType *ot);
-void MATERIAL_OT_mtex_paste(struct wmOperatorType *ot);
-
 void SCENE_OT_render_layer_add(struct wmOperatorType *ot);
 void SCENE_OT_render_layer_remove(struct wmOperatorType *ot);
 
+
+void TEXTURE_OT_slot_copy(struct wmOperatorType *ot);
+void TEXTURE_OT_slot_paste(struct wmOperatorType *ot);
 void TEXTURE_OT_slot_move(struct wmOperatorType *ot);
 void TEXTURE_OT_envmap_save(struct wmOperatorType *ot);
 void TEXTURE_OT_envmap_clear(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/render/render_ops.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_ops.c	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/editors/render/render_ops.c	2010-03-29 05:37:34 UTC (rev 27821)
@@ -53,9 +53,6 @@
 	
 	WM_operatortype_append(MATERIAL_OT_copy);
 	WM_operatortype_append(MATERIAL_OT_paste);
-	
-	WM_operatortype_append(MATERIAL_OT_mtex_copy);
-	WM_operatortype_append(MATERIAL_OT_mtex_paste);
 
 	WM_operatortype_append(SCENE_OT_render_layer_add);
 	WM_operatortype_append(SCENE_OT_render_layer_remove);
@@ -64,6 +61,8 @@
 	WM_operatortype_append(SCENE_OT_render_data_set_quicktime_codec);
 #endif
 	
+	WM_operatortype_append(TEXTURE_OT_slot_copy);
+	WM_operatortype_append(TEXTURE_OT_slot_paste);
 	WM_operatortype_append(TEXTURE_OT_slot_move);
 	WM_operatortype_append(TEXTURE_OT_envmap_save);
 	WM_operatortype_append(TEXTURE_OT_envmap_clear);

Modified: trunk/blender/source/blender/editors/render/render_shading.c
===================================================================
--- trunk/blender/source/blender/editors/render/render_shading.c	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/editors/render/render_shading.c	2010-03-29 05:37:34 UTC (rev 27821)
@@ -1030,57 +1030,153 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-static int copy_material_mtex_exec(bContext *C, wmOperator *op)
+
+static short mtexcopied=0; /* must be reset on file load */
+static MTex mtexcopybuf;
+
+void ED_render_clear_mtex_copybuf(void)
+{	/* use for file reload */
+	mtexcopied= 0;
+}
+
+void copy_mtex_copybuf(ID *id)
 {
-	Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data;
+	MTex **mtex= NULL;
+	
+	switch(GS(id->name)) {
+		case ID_MA:
+			mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]);
+			break;
+		case ID_LA:
+			mtex= &(((Lamp *)id)->mtex[(int)((Lamp *)id)->texact]);
+			// la->mtex[(int)la->texact] // TODO
+			break;
+		case ID_WO:
+			mtex= &(((World *)id)->mtex[(int)((World *)id)->texact]);
+			// mtex= wrld->mtex[(int)wrld->texact]; // TODO
+			break;
+	}
+	
+	if(mtex && *mtex) {
+		memcpy(&mtexcopybuf, *mtex, sizeof(MTex));
+		mtexcopied= 1;
+	}
+	else {
+		mtexcopied= 0;
+	}
+}
 
-	if(ma==NULL)
+void paste_mtex_copybuf(ID *id)
+{
+	MTex **mtex= NULL;
+	
+	if(mtexcopied == 0 || mtexcopybuf.tex==NULL)
+		return;
+	
+	switch(GS(id->name)) {
+		case ID_MA:
+			mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]);
+			break;
+		case ID_LA:
+			mtex= &(((Lamp *)id)->mtex[(int)((Lamp *)id)->texact]);
+			// la->mtex[(int)la->texact] // TODO
+			break;
+		case ID_WO:
+			mtex= &(((World *)id)->mtex[(int)((World *)id)->texact]);
+			// mtex= wrld->mtex[(int)wrld->texact]; // TODO
+			break;
+	}
+	
+	if(mtex) {
+		if(*mtex==NULL) {
+			*mtex= MEM_mallocN(sizeof(MTex), "mtex copy");
+		}
+		else if((*mtex)->tex) {
+			(*mtex)->tex->id.us--;
+		}
+		
+		memcpy(*mtex, &mtexcopybuf, sizeof(MTex));
+		
+		id_us_plus((ID *)mtexcopybuf.tex);
+	}
+}
+
+
+static int copy_mtex_exec(bContext *C, wmOperator *op)
+{
+	ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data;
+
+	if(id==NULL) {
+		/* copying empty slot */
+		ED_render_clear_mtex_copybuf();
 		return OPERATOR_CANCELLED;
+	}
 
-	copy_mat_mtex_copybuf(&ma->id);
+	copy_mtex_copybuf(id);
 
-	WM_event_add_notifier(C, NC_MATERIAL, ma);
+	WM_event_add_notifier(C, NC_TEXTURE, NULL);
 
 	return OPERATOR_FINISHED;
 }
 
-void MATERIAL_OT_mtex_copy(wmOperatorType *ot)
+static int copy_mtex_poll(bContext *C)
 {
+	ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data;
+	
+	return (id != NULL);
+}
+
+void TEXTURE_OT_slot_copy(wmOperatorType *ot)
+{
 	/* identifiers */
-	ot->name= "Copy Material Texture Settings";
-	ot->idname= "MATERIAL_OT_mtex_copy";
+	ot->name= "Copy Texture Slot Settings";
+	ot->idname= "TEXTURE_OT_slot_copy";
 	ot->description="Copy the material texture settings and nodes";
 
 	/* api callbacks */
-	ot->exec= copy_material_mtex_exec;
-
+	ot->exec= copy_mtex_exec;
+	ot->poll= copy_mtex_poll;
+	
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
-static int paste_material_mtex_exec(bContext *C, wmOperator *op)
+static int paste_mtex_exec(bContext *C, wmOperator *op)
 {
-	Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data;
+	ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data;
 
-	if(ma==NULL)
-		return OPERATOR_CANCELLED;
+	if(id==NULL) {
+		Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data;
+		Lamp *la= CTX_data_pointer_get_type(C, "lamp", &RNA_Lamp).data;
+		World *wo= CTX_data_pointer_get_type(C, "world", &RNA_World).data;
+		
+		if (ma)
+			id = &ma->id;
+		else if (la)
+			id = &la->id;
+		else if (wo)
+			id = &wo->id;
+		
+		if (id==NULL)
+			return OPERATOR_CANCELLED;
+	}
 
-	paste_mat_mtex_copybuf(&ma->id);
+	paste_mtex_copybuf(id);
 
-	WM_event_add_notifier(C, NC_MATERIAL|ND_SHADING_DRAW, ma);
+	WM_event_add_notifier(C, NC_TEXTURE|ND_SHADING_DRAW, NULL);
 
 	return OPERATOR_FINISHED;
 }
 
-void MATERIAL_OT_mtex_paste(wmOperatorType *ot)
+void TEXTURE_OT_slot_paste(wmOperatorType *ot)
 {
 	/* identifiers */
-	ot->name= "Paste Material Texture Settings";
-	ot->idname= "MATERIAL_OT_mtex_paste";
-	ot->description="Copy the material texture settings and nodes";
+	ot->name= "Paste Texture Slot Settings";
+	ot->idname= "TEXTURE_OT_slot_paste";
+	ot->description="Copy the texture settings and nodes";
 
 	/* api callbacks */
-	ot->exec= paste_material_mtex_exec;
+	ot->exec= paste_mtex_exec;
 
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;

Modified: trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2010-03-29 05:00:04 UTC (rev 27820)
+++ trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2010-03-29 05:37:34 UTC (rev 27821)
@@ -155,7 +155,7 @@
 	}
 	
 	clear_matcopybuf();
-	clear_mat_mtex_copybuf();
+	ED_render_clear_mtex_copybuf();
 
 	//	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
 		





More information about the Bf-blender-cvs mailing list