[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29919] trunk/blender: Fix for [#22714] Constraints stack : move up and move down buttons problem

Thomas Dinges dingto at gmx.de
Sun Jul 4 11:42:00 CEST 2010


Revision: 29919
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29919
Author:   dingto
Date:     2010-07-04 11:42:00 +0200 (Sun, 04 Jul 2010)

Log Message:
-----------
Fix for [#22714] Constraints stack : move up and move down buttons problem
* Constraint template now uses 2 rows as well, when the area width is small. 
* UI Code could use some code/layout cleanup still, will look into that soon. 

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_object_constraint.py
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/object/object_constraint.c
    trunk/blender/source/blender/makesrna/intern/rna_constraint.c
    trunk/blender/source/blender/makesrna/intern/rna_ui_api.c

Modified: trunk/blender/release/scripts/ui/properties_object_constraint.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_object_constraint.py	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/release/scripts/ui/properties_object_constraint.py	2010-07-04 09:42:00 UTC (rev 29919)
@@ -20,6 +20,7 @@
 import bpy
 
 narrowui = bpy.context.user_preferences.view.properties_width_check
+narrowcon = 260
 
 
 class ConstraintButtonsPanel(bpy.types.Panel):
@@ -30,8 +31,9 @@
     def draw_constraint(self, context, con):
         layout = self.layout
 
-        box = layout.template_constraint(con)
         wide_ui = context.region.width > narrowui
+        compact_con = context.region.width < narrowcon
+        box = layout.template_constraint(con, compact = compact_con)
 
         if box:
             # match enum type to our functions, avoids a lookup table.

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-07-04 09:42:00 UTC (rev 29919)
@@ -676,7 +676,7 @@
 void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, 
 	struct PointerRNA *root_ptr, char *text);
 uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, int compact);
-uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
+uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr, int compact);
 void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot);
 void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
 void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-07-04 09:42:00 UTC (rev 29919)
@@ -944,12 +944,12 @@
 }
 
 /* draw panel showing settings for a constraint */
-static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con)
+static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, int compact)
 {
 	bPoseChannel *pchan= get_active_posechannel(ob);
 	bConstraintTypeInfo *cti;
 	uiBlock *block;
-	uiLayout *result= NULL, *col, *box, *row, *subrow;
+	uiLayout *result= NULL, *col, *col1, *col2, *box, *row, *subrow, *split;
 	PointerRNA ptr;
 	char typestr[32];
 	short width = 265;
@@ -985,13 +985,15 @@
 	uiLayoutSetContextPointer(col, "constraint", &ptr);
 
 	box= uiLayoutBox(col);
-	row= uiLayoutRow(box, 0);
+	split = uiLayoutSplit(box, 0.35, 0);
+	
+	col1= uiLayoutColumn(split, 0);
+	col2= uiLayoutColumn(split, 0);
+	row = uiLayoutRow(col1, 0);
+	subrow = uiLayoutRow(col2, 0);
 
 	block= uiLayoutGetBlock(box);
 
-	subrow= uiLayoutRow(row, 0);
-	//uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT);
-
 	/* Draw constraint header */
 	uiBlockSetEmboss(block, UI_EMBOSSN);
 	
@@ -999,7 +1001,7 @@
 	rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20;
 	
 	/* open/close */
-	uiItemR(subrow, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0);
+	uiItemR(row, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0);
 	
 	/* name */	
 	uiBlockSetEmboss(block, UI_EMBOSS);
@@ -1008,15 +1010,12 @@
 		uiBlockSetCol(block, TH_REDALERT);*/
 	
 	uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); 
-	
+
 	if(proxy_protected == 0) {
 		uiItemR(subrow, &ptr, "name", 0, "", 0);
 	}
 	else
 		uiItemL(subrow, con->name, 0);
-
-	subrow= uiLayoutRow(row, 0);
-	//uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT);
 	
 	/* proxy-protected constraints cannot be edited, so hide up/down + close buttons */
 	if (proxy_protected) {
@@ -1051,23 +1050,36 @@
 		show_upbut= ((prev_proxylock == 0) && (con->prev));
 		show_downbut= (con->next) ? 1 : 0;
 		
+		if (compact) {
+			/* Draw "Delete" Button in first row, before splitting */
+			uiBlockSetEmboss(block, UI_EMBOSSN);
+			uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete");
+			uiBlockSetEmboss(block, UI_EMBOSS);
+
+			subrow = uiLayoutRow(col2, 0);
+		}
+		
+		uiLayoutSetOperatorContext(subrow, WM_OP_INVOKE_DEFAULT);
+
 		if (show_upbut || show_downbut) {
 			uiBlockBeginAlign(block);
 				uiBlockSetEmboss(block, UI_EMBOSS);
 				
 				if (show_upbut)
-					uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_up", WM_OP_INVOKE_DEFAULT, ICON_TRIA_UP, xco+width-50, yco, 16, 18, "Move constraint up in constraint stack");
+					uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up");
 				
 				if (show_downbut)
-					uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_down", WM_OP_INVOKE_DEFAULT, ICON_TRIA_DOWN, xco+width-50+18, yco, 16, 18, "Move constraint down in constraint stack");
+					uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down");
 			uiBlockEndAlign(block);
 		}
 	
 		/* Close 'button' - emboss calls here disable drawing of 'button' behind X */
 		uiBlockSetEmboss(block, UI_EMBOSSN);
-			uiDefIconButBitS(block, ICONTOGN, CONSTRAINT_OFF, B_CONSTRAINT_TEST, ICON_CHECKBOX_DEHLT, xco+243, yco, 19, 19, &con->flag, 0.0, 0.0, 0.0, 0.0, "enable/disable constraint");
+			uiItemR(subrow, &ptr, "enabled", 0, "", 0);
 			
-			uiDefIconButO(block, BUT, "CONSTRAINT_OT_delete", WM_OP_INVOKE_DEFAULT, ICON_X, xco+262, yco, 19, 19, "Delete constraint");
+			if (!compact) {
+				uiItemO(subrow, "", ICON_X, "CONSTRAINT_OT_delete");
+			}
 		uiBlockSetEmboss(block, UI_EMBOSS);
 	}
 	
@@ -1093,7 +1105,7 @@
 	return result;
 }
 
-uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr)
+uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr, int compact)
 {
 	Object *ob;
 	bConstraint *con;
@@ -1121,7 +1133,7 @@
 			return NULL;
 	}
 
-	return draw_constraint(layout, ob, con);
+	return draw_constraint(layout, ob, con, compact);
 }
 
 

Modified: trunk/blender/source/blender/editors/object/object_constraint.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_constraint.c	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/source/blender/editors/object/object_constraint.c	2010-07-04 09:42:00 UTC (rev 29919)
@@ -866,7 +866,7 @@
 	/* identifiers */
 	ot->name= "Move Constraint Down";
 	ot->idname= "CONSTRAINT_OT_move_down";
-	ot->description= "Move constraint down constraint stack";
+	ot->description= "Move constraint down in constraint stack";
 	
 	/* callbacks */
 	ot->exec= constraint_move_down_exec;
@@ -913,7 +913,7 @@
 	/* identifiers */
 	ot->name= "Move Constraint Up";
 	ot->idname= "CONSTRAINT_OT_move_up";
-	ot->description= "Move constraint up constraint stack";
+	ot->description= "Move constraint up in constraint stack";
 	
 	/* callbacks */
 	ot->exec= constraint_move_up_exec;

Modified: trunk/blender/source/blender/makesrna/intern/rna_constraint.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_constraint.c	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/source/blender/makesrna/intern/rna_constraint.c	2010-07-04 09:42:00 UTC (rev 29919)
@@ -1937,11 +1937,16 @@
 	RNA_def_property_ui_text(prop, "Target Space", "Space that target is evaluated in");
 
 	/* flags */
+	prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_OFF);
+	RNA_def_property_ui_text(prop, "Enabled", "Enable/Disable Constraint");
+	RNA_def_property_ui_icon(prop, ICON_CHECKBOX_DEHLT, 1);
+	
 	prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND);
 	RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI");
 	RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
-	
+
 		// XXX this is really an internal flag, but it may be useful for some tools to be able to access this...
 	prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_clear_flag(prop, PROP_EDITABLE);

Modified: trunk/blender/source/blender/makesrna/intern/rna_ui_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_ui_api.c	2010-07-04 09:22:02 UTC (rev 29918)
+++ trunk/blender/source/blender/makesrna/intern/rna_ui_api.c	2010-07-04 09:42:00 UTC (rev 29919)
@@ -317,6 +317,7 @@
 	RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
 	parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
 	RNA_def_function_return(func, parm);
+	RNA_def_boolean(func, "compact", 0, "", "Show a smaller version of the template, split on two lines.");
 
 	func= RNA_def_function(srna, "template_preview", "uiTemplatePreview");
 	parm= RNA_def_pointer(func, "id", "ID", "", "ID datablock.");





More information about the Bf-blender-cvs mailing list