[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