[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20440] branches/blender2.5/blender: UI:

Brecht Van Lommel brecht at blender.org
Wed May 27 02:03:50 CEST 2009


Revision: 20440
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20440
Author:   blendix
Date:     2009-05-27 02:03:49 +0200 (Wed, 27 May 2009)

Log Message:
-----------
UI:
* Added Constraints template and Add Constraint operator.
* Added toggle=True/False parameter to uiItemR, to get a
  toggle button (actual button) rather than an "option"
  button (checkbox) 
* Added OPTION/OPTIONN button type, to distinguish with
  TOG/TOGN.

RNA:
* Make all modifier pointers editable, including correct updates.
* Added notifiers and updates to constraints.
* Fix a stack corruption, pointed out by Andrea, and potentially
  causing crashes.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_modifier.py
    branches/blender2.5/blender/source/blender/blenkernel/BKE_library.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/library.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_layout.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_utils.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_widgets.c
    branches/blender2.5/blender/source/blender/editors/object/editconstraint.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    branches/blender2.5/blender/source/blender/editors/space_image/image_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/makesrna/RNA_enum_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_constraint.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_pose.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sound.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_types.h

Added Paths:
-----------
    branches/blender2.5/blender/release/ui/buttons_object_constraint.py

Modified: branches/blender2.5/blender/release/ui/buttons_data_modifier.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_modifier.py	2009-05-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/release/ui/buttons_data_modifier.py	2009-05-27 00:03:49 UTC (rev 20440)
@@ -23,9 +23,9 @@
 		row.itemL();
 
 		for md in ob.modifiers:
-			box = layout.template_modifier(context, md)
+			box = layout.template_modifier(md)
 
-			if md.expanded:
+			if box:
 				if md.type == 'ARMATURE':
 					self.armature(box, md)
 				if md.type == 'ARRAY':
@@ -103,7 +103,7 @@
 		if md.fit_type == 'FIT_LENGTH':
 			layout.itemR(md, "length")
 		if md.fit_type == 'FIT_CURVE':
-				layout.itemR(md, "curve")
+			layout.itemR(md, "curve")
 		
 		split = layout.split()
 		
@@ -150,9 +150,11 @@
 	def build(self, layout, md):
 		layout.itemR(md, "start")
 		layout.itemR(md, "length")
-		layout.itemR(md, "randomize")
+
+		row = layout.row()
+		row.itemR(md, "randomize")
 		if md.randomize:
-			layout.itemR(md, "seed")
+			row.itemR(md, "seed")
 			
 	def cast(self, layout, md):
 		layout.itemR(md, "cast_type")
@@ -173,7 +175,7 @@
 		layout.itemL(text="See Collision panel.")
 		
 	def curve(self, layout, md):
-		layout.itemR(md, "curve")
+		layout.itemR(md, "object")
 		layout.itemR(md, "vertex_group")
 		layout.itemR(md, "deform_axis")
 		
@@ -218,7 +220,7 @@
 		# Missing: "Reset" and "Recenter"
 		
 	def lattice(self, layout, md):
-		layout.itemR(md, "lattice")
+		layout.itemR(md, "object")
 		layout.itemR(md, "vertex_group")
 		
 	def mask(self, layout, md):
@@ -230,7 +232,7 @@
 		layout.itemR(md, "inverse")
 		
 	def meshdeform(self, layout, md):
-		layout.itemR(md, "mesh")
+		layout.itemR(md, "object")
 		layout.itemR(md, "vertex_group")
 		layout.itemR(md, "invert")
 		layout.itemR(md, "precision")
@@ -312,9 +314,10 @@
 	def smooth(self, layout, md):
 		split = layout.split()
 		sub = split.column()
-		sub.itemR(md, "x")
-		sub.itemR(md, "y")
-		sub.itemR(md, "z")
+		row = sub.row(align=True)
+		row.itemR(md, "x", toggle=True)
+		row.itemR(md, "y", toggle=True)
+		row.itemR(md, "z", toggle=True)
 		sub = split.column()
 		sub.itemR(md, "factor")
 		sub.itemR(md, "repeat")
@@ -353,9 +356,10 @@
 		sub = split.column()
 		sub.itemR(md, "normals")
 		if md.normals:
-			sub.itemR(md, "x_normal", text="X")
-			sub.itemR(md, "y_normal", text="Y")
-			sub.itemR(md, "z_normal", text="Z")
+			row = sub.row(align=True)
+			row.itemR(md, "x_normal", text="X", toggle=True)
+			row.itemR(md, "y_normal", text="Y", toggle=True)
+			row.itemR(md, "z_normal", text="Z", toggle=True)
 		
 		col = layout.column_flow()
 		col.itemR(md, "time_offset")
@@ -380,4 +384,5 @@
 		col.itemR(md, "width", slider=True)
 		col.itemR(md, "narrowness", slider=True)
 
-bpy.types.register(DATA_PT_modifiers)
\ No newline at end of file
+bpy.types.register(DATA_PT_modifiers)
+

Added: branches/blender2.5/blender/release/ui/buttons_object_constraint.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_object_constraint.py	                        (rev 0)
+++ branches/blender2.5/blender/release/ui/buttons_object_constraint.py	2009-05-27 00:03:49 UTC (rev 20440)
@@ -0,0 +1,54 @@
+
+import bpy
+
+class DataButtonsPanel(bpy.types.Panel):
+	__space_type__ = "BUTTONS_WINDOW"
+	__region_type__ = "WINDOW"
+	__context__ = "object"
+
+	def poll(self, context):
+		ob = context.active_object
+		return (ob != None)
+		
+class DATA_PT_constraints(DataButtonsPanel):
+	__idname__ = "DATA_PT_constraints"
+	__label__ = "Constraints"
+
+	def draw(self, context):
+		ob = context.active_object
+		layout = self.layout
+
+		row = layout.row()
+		row.item_menu_enumO("OBJECT_OT_constraint_add", "type")
+		row.itemL();
+
+		for con in ob.constraints:
+			box = layout.template_constraint(con)
+
+			if box:
+				if con.type == 'COPY_LOCATION':
+					self.copy_location(box, con)
+							
+	def copy_location(self, layout, con):
+		layout.itemR(con, "target")
+
+		if con.target and con.target.type == "ARMATURE":
+			layout.itemR(con, "subtarget", text="Bone") # XXX autocomplete
+			row = layout.row()
+			row.itemL(text="Head/Tail:")
+			row.itemR(con, "head_tail", text="")
+		elif con.target and con.target.type == "MESH":
+			layout.itemR(con, "subtarget", text="Vertex Group") # XXX autocomplete
+
+		row = layout.row(align=True)
+		row.itemR(con, "locate_like_x", text="X", toggle=True)
+		row.itemR(con, "invert_x", text="-", toggle=True)
+		row.itemR(con, "locate_like_y", text="Y", toggle=True)
+		row.itemR(con, "invert_y", text="-", toggle=True)
+		row.itemR(con, "locate_like_z", text="Z", toggle=True)
+		row.itemR(con, "invert_z", text="-", toggle=True)
+
+		layout.itemR(con, "offset")
+
+bpy.types.register(DATA_PT_constraints)
+

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_library.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_library.h	2009-05-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_library.h	2009-05-27 00:03:49 UTC (rev 20440)
@@ -45,6 +45,7 @@
 
 void id_lib_extern(struct ID *id);
 void id_us_plus(struct ID *id);
+void id_us_min(struct ID *id);
 
 int check_for_dupid(struct ListBase *lb, struct ID *id, char *name);
 int new_id(struct ListBase *lb, struct ID *id, const char *name);

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/library.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/library.c	2009-05-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/library.c	2009-05-27 00:03:49 UTC (rev 20440)
@@ -142,6 +142,12 @@
 	}
 }
 
+void id_us_min(ID *id)
+{
+	if(id)
+		id->us--;
+}
+
 ListBase *wich_libbase(Main *mainlib, short type)
 {
 	switch( type ) {

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-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-05-27 00:03:49 UTC (rev 20440)
@@ -35,6 +35,7 @@
 struct Base;
 struct View3D;
 struct bConstraint;
+struct bConstraintChannel;
 struct KeyBlock;
 struct Lattice;
 struct Mesh;
@@ -71,9 +72,21 @@
 int object_data_is_libdata(struct Object *ob);
 
 /* constraints */
-struct bConstraint *add_new_constraint (short type);
-void add_constraint_to_object (struct bConstraint *con, struct Object *ob);
+struct bConstraint *add_new_constraint(short type);
+void add_constraint_to_object(struct bConstraint *con, struct Object *ob);
 
+struct ListBase *get_active_constraints(struct Object *ob);
+struct bConstraint *get_active_constraint(struct Object *ob);
+struct bConstraintChannel *get_active_constraint_channel(struct Scene *scene, struct Object *ob);
+
+void object_test_constraints(struct Object *ob);
+
+void ED_object_constraint_rename(struct Object *ob, struct bConstraint *con, char *oldname);
+void ED_object_constraint_set_active(struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_delete(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_move_down(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
+int ED_object_constraint_move_up(struct ReportList *reports, struct Object *ob, struct bConstraint *con);
+
 /* editlattice.c */
 void mouse_lattice(struct bContext *C, short mval[2], int extend);
 void undo_push_lattice(struct bContext *C, char *name);

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-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h	2009-05-27 00:03:49 UTC (rev 20440)
@@ -188,6 +188,8 @@
 #define FTPREVIEW (35<<9)
 #define NUMABS	(36<<9)
 #define TOGBUT  (37<<9)
+#define OPTION  (38<<9)
+#define OPTIONN (39<<9)
 #define BUTTYPE	(63<<9)
 
 /* Drawing
@@ -559,7 +561,8 @@
 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);
+uiLayout *uiTemplateModifier(uiLayout *layout, struct PointerRNA *ptr);
+uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
 
 /* items */
 void uiItemO(uiLayout *layout, char *name, int icon, char *opname);
@@ -571,8 +574,8 @@
 void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value);
 void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, struct IDProperty *properties, int context);
 
-void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int expand, int slider);
-void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider);
+void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int expand, int slider, int toggle);
+void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int expand, int slider, int toggle);
 void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value);
 void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname);
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-05-26 23:37:40 UTC (rev 20439)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-05-27 00:03:49 UTC (rev 20440)
@@ -679,7 +679,7 @@
 
 	value= ui_get_but_val(but);
 
-	if( but->type==TOGN  || but->type==ICONTOGN) true= 0;
+	if(ELEM3(but->type, TOGN, ICONTOGN, OPTIONN)) true= 0;
 
 	if( but->bit ) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list