[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20319] branches/blender2.5/blender: 2. 5 UI: Modifier Template

Brecht Van Lommel brecht at blender.org
Thu May 21 17:34:09 CEST 2009


Revision: 20319
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20319
Author:   blendix
Date:     2009-05-21 17:34:09 +0200 (Thu, 21 May 2009)

Log Message:
-----------
2.5 UI: Modifier Template

* template_modifier creates the modifier box, and returns a layout
  to put the buttons in.
* Only the armature modifier is now done with python code, all other
  modifiers use C code. To convert a modifier to python, remove the
  corresponding C code and create a function in DATA_PT_modifiers.
* Some modifiers still require some RNA work to get it working well,
  especially to make pointers editable. Mostly that is a matter of
  defining an own _set callback and put some of the modifier C code
  into it.
* Still various buttons that don't work, like for hooks or mesh
  deform binding.
* Fix for crashing decimate modifier (still disabled).

* Removed UI_BUT_NO_HILITE, HMENU.
* Make uiLayoutBox work with align.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_modifier.py
    branches/blender2.5/blender/source/blender/blenkernel/BKE_object.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
    branches/blender2.5/blender/source/blender/editors/include/ED_object.h
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_api.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/python/intern/bpy_ui.c

Modified: branches/blender2.5/blender/release/ui/buttons_data_modifier.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_modifier.py	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/release/ui/buttons_data_modifier.py	2009-05-21 15:34:09 UTC (rev 20319)
@@ -21,27 +21,17 @@
 		if not ob:
 			return
 
-		layout.row()
-		layout.item_menu_enumO("OBJECT_OT_modifier_add", "type")
+		row = layout.row()
+		row.item_menu_enumO("OBJECT_OT_modifier_add", "type")
+		row.itemL();
 
 		for md in ob.modifiers:
-			sub = layout.box()
+			box = layout.template_modifier(context, md)
 
-			row = sub.row()
-			row.itemR(md, "expanded", text="")
-			row.itemR(md, "name", text="")
-
-			row.itemR(md, "render", text="")
-			row.itemR(md, "realtime", text="")
-			row.itemR(md, "editmode", text="")
-			row.itemR(md, "on_cage", text="")
-
 			if md.expanded:
-				sub.itemS()
+				if md.type == 'ARMATURE':
+					self.armature(box, md)
 
-				if (md.type == 'ARMATURE'):
-					self.armature(sub, md)
-
 	def armature(self, layout, md):
 		layout.itemR(md, "object")
 		row = layout.row()
@@ -51,9 +41,7 @@
 		flow.itemR(md, "use_vertex_groups")
 		flow.itemR(md, "use_bone_envelopes")
 		flow.itemR(md, "quaternion")
-		flow.itemR(md, "b_bone_rest")
 		flow.itemR(md, "multi_modifier")
 		
 bpy.types.register(DATA_PT_modifiers)
 
-

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_object.h	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_object.h	2009-05-21 15:34:09 UTC (rev 20319)
@@ -85,6 +85,7 @@
 struct Object *copy_object(struct Object *ob);
 void expand_local_object(struct Object *ob);
 void make_local_object(struct Object *ob);
+int object_data_is_libdata(struct Object *ob);
 void set_mblur_offs(float blur);
 void set_field_offs(float field);
 void disable_speed_curve(int val);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c	2009-05-21 15:34:09 UTC (rev 20319)
@@ -4058,17 +4058,15 @@
 	tdmd->percent = dmd->percent;
 }
 
-//XXX
-#if 0 
 static DerivedMesh *decimateModifier_applyModifier(
 		ModifierData *md, Object *ob, DerivedMesh *derivedData,
   int useRenderParams, int isFinalCalc)
 {
-	DecimateModifierData *dmd = (DecimateModifierData*) md;
+	// DecimateModifierData *dmd = (DecimateModifierData*) md;
 	DerivedMesh *dm = derivedData, *result = NULL;
 	MVert *mvert;
 	MFace *mface;
-	LOD_Decimation_Info lod;
+	// LOD_Decimation_Info lod;
 	int totvert, totface;
 	int a, numTris;
 
@@ -4090,6 +4088,8 @@
 		goto exit;
 	}
 
+	// XXX
+#if 0
 	lod.vertex_buffer= MEM_mallocN(3*sizeof(float)*totvert, "vertices");
 	lod.vertex_normal_buffer= MEM_mallocN(3*sizeof(float)*totvert, "normals");
 	lod.triangle_index_buffer= MEM_mallocN(3*sizeof(int)*numTris, "trias");
@@ -4174,11 +4174,14 @@
 	MEM_freeN(lod.vertex_buffer);
 	MEM_freeN(lod.vertex_normal_buffer);
 	MEM_freeN(lod.triangle_index_buffer);
+#else
+	modifier_setError(md, "Modifier not working yet in 2.5.");
+	goto exit;
+#endif
 
 exit:
 		return result;
 }
-#endif
 
 /* Smooth */
 
@@ -8271,7 +8274,7 @@
 		mti->flags = eModifierTypeFlag_AcceptsMesh;
 		mti->initData = decimateModifier_initData;
 		mti->copyData = decimateModifier_copyData;
-		//XXX mti->applyModifier = decimateModifier_applyModifier;
+		mti->applyModifier = decimateModifier_applyModifier;
 
 		mti = INIT_TYPE(Smooth);
 		mti->type = eModifierTypeType_OnlyDeform;

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/object.c	2009-05-21 15:34:09 UTC (rev 20319)
@@ -1320,6 +1320,18 @@
 	expand_local_object(ob);
 }
 
+/* returns true if the Object data is a from an external blend file (libdata) */
+int object_data_is_libdata(Object *ob)
+{
+	if(!ob) return 0;
+	if(ob->proxy) return 0;
+	if(ob->id.lib) return 1;
+	if(!ob->data) return 0;
+	if(((ID *)ob->data)->lib) return 1;
+
+	return 0;
+}
+
 /* *************** PROXY **************** */
 
 /* when you make proxy, ensure the exposed layers are extern */

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-05-21 15:34:09 UTC (rev 20319)
@@ -39,6 +39,7 @@
 struct Lattice;
 struct Mesh;
 struct Curve;
+struct ReportList;
 
 /* object_edit.c */
 void ED_operatortypes_object(void);
@@ -86,7 +87,13 @@
 void key_to_curve(struct KeyBlock *kb, struct Curve  *cu, struct ListBase *nurb);
 void curve_to_key(struct Curve *cu, struct KeyBlock *kb, struct ListBase *nurb);
 
+/* object_modifier.c */
+int ED_object_modifier_delete(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_move_down(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_move_up(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_convert(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_apply(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct ModifierData *md);
+int ED_object_modifier_copy(struct ReportList *reports, struct Object *ob, struct ModifierData *md);
 
-
 #endif /* ED_OBJECT_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-05-21 15:34:09 UTC (rev 20319)
@@ -86,7 +86,7 @@
 #define UI_BLOCK_NUMSELECT		8
 #define UI_BLOCK_ENTER_OK		16
 #define UI_BLOCK_NOSHADOW		32
-#define UI_BLOCK_NO_HILITE		64		/* XXX 2.5 not implemented */
+#define UI_BLOCK_UNUSED			64
 #define UI_BLOCK_MOVEMOUSE_QUIT	128
 #define UI_BLOCK_KEEP_OPEN		256
 #define UI_BLOCK_POPUP			512
@@ -127,8 +127,7 @@
 #define UI_BUT_ALIGN_DOWN	(1<<17)
 
 #define UI_BUT_DISABLED		(1<<18)
-	/* dont draw hilite on mouse over */
-#define UI_NO_HILITE		(1<<19)
+#define UI_BUT_UNUSED		(1<<19)
 #define UI_BUT_ANIMATED		(1<<20)
 #define UI_BUT_ANIMATED_KEY	(1<<21)
 #define UI_BUT_DRIVEN		(1<<22)
@@ -188,8 +187,7 @@
 #define ICONTOGN (34<<9)
 #define FTPREVIEW (35<<9)
 #define NUMABS	(36<<9)
-#define HMENU	(37<<9)
-#define TOGBUT  (38<<9)
+#define TOGBUT  (37<<9)
 #define BUTTYPE	(63<<9)
 
 /* Drawing
@@ -560,6 +558,7 @@
 void uiTemplateHeader(uiLayout *layout, struct bContext *C);
 void uiTemplateHeaderID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
 	char *newop, char *openop, char *unlinkop);
+uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
 
 /* items */
 void uiItemO(uiLayout *layout, char *name, int icon, char *opname);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-05-21 15:34:09 UTC (rev 20319)
@@ -1987,7 +1987,7 @@
 
 int ui_but_can_align(uiBut *but)
 {
-	return !ELEM(but->type, LABEL, ROUNDBOX);
+	return (but->type != LABEL);
 }
 
 static void ui_block_do_align_but(uiBlock *block, uiBut *first, int nr)
@@ -2221,8 +2221,6 @@
 	}
 
 	but->flag |= (block->flag & UI_BUT_ALIGN);
-	if(block->flag & UI_BLOCK_NO_HILITE)
-		but->flag |= UI_NO_HILITE;
 
 	if (but->lock) {
 		if (but->lockstr) {
@@ -2230,12 +2228,7 @@
 		}
 	}
 
-	if(but->type == ROUNDBOX) {
-		but->flag |= UI_NO_HILITE;
-		BLI_addhead(&block->buttons, but);
-	}
-	else
-		BLI_addtail(&block->buttons, but);
+	BLI_addtail(&block->buttons, but);
 	
 	if(block->curlayout)
 		ui_layout_add_but(block->curlayout, but);
@@ -2999,7 +2992,7 @@
 
 uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip)
 {
-	uiBut *but= ui_def_but(block, HMENU, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
+	uiBut *but= ui_def_but(block, PULLDOWN, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
 	but->menu_create_func= func;
 	ui_check_but(but);
 	return but;
@@ -3007,7 +3000,7 @@
 
 uiBut *uiDefIconTextMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip)
 {
-	uiBut *but= ui_def_but(block, HMENU, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
+	uiBut *but= ui_def_but(block, PULLDOWN, 0, str, x1, y1, x2, y2, arg, 0.0, 0.0, 0.0, 0.0, tip);
 
 	but->icon= (BIFIconID) icon;
 	but->flag|= UI_HAS_ICON;

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_api.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_api.c	2009-05-21 14:11:12 UTC (rev 20318)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_api.c	2009-05-21 15:34:09 UTC (rev 20319)
@@ -189,5 +189,13 @@
 	RNA_def_string(func, "new", "", 0, "", "Operator identifier to create a new ID block.");
 	RNA_def_string(func, "open", "", 0, "", "Operator identifier to open a new ID block.");
 	RNA_def_string(func, "unlink", "", 0, "", "Operator identifier to unlink the ID block.");
+
+	func= RNA_def_function(srna, "template_modifier", "uiTemplateModifier");
+	parm= RNA_def_pointer(func, "context", "Context", "", "Current context.");

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list