コード例 #1
0
/* settings for 'rotation difference' driver variable type */
static void graph_panel_driverVar__rotDiff(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar = &dvar->targets[0];
	DriverTarget *dtar2 = &dvar->targets[1];
	Object *ob1 = (Object *)dtar->id;
	Object *ob2 = (Object *)dtar2->id;
	PointerRNA dtar_ptr, dtar2_ptr;
	uiLayout *col;
	
	/* initialize RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar, &dtar_ptr); 
	RNA_pointer_create(id, &RNA_DriverTarget, dtar2, &dtar2_ptr); 
	
	/* Bone 1 */
	col = uiLayoutColumn(layout, TRUE);
	uiTemplateAnyID(col, &dtar_ptr, "id", "id_type", IFACE_("Bone 1:"));
		
	if (dtar->id && ob1->pose) {
		PointerRNA tar_ptr;
			
		RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr);
		uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
	
	col = uiLayoutColumn(layout, TRUE);
	uiTemplateAnyID(col, &dtar2_ptr, "id", "id_type", IFACE_("Bone 2:"));
		
	if (dtar2->id && ob2->pose) {
		PointerRNA tar_ptr;
			
		RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr);
		uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
}
コード例 #2
0
/* settings for 'transform channel' driver variable type */
static void graph_panel_driverVar__transChan(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar = &dvar->targets[0];
	Object *ob = (Object *)dtar->id;
	PointerRNA dtar_ptr;
	uiLayout *col, *sub;
	
	/* initialize RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar, &dtar_ptr); 
	
	/* properties */
	col = uiLayoutColumn(layout, TRUE);
	uiTemplateAnyID(col, &dtar_ptr, "id", "id_type", IFACE_("Ob/Bone:"));
		
	if (dtar->id && ob->pose) {
		PointerRNA tar_ptr;
			
		RNA_pointer_create(dtar->id, &RNA_Pose, ob->pose, &tar_ptr);
		uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
		
	sub = uiLayoutColumn(layout, TRUE);
	uiItemR(sub, &dtar_ptr, "transform_type", 0, NULL, ICON_NONE);
	uiItemR(sub, &dtar_ptr, "transform_space", 0, IFACE_("Space"), ICON_NONE);
}
コード例 #3
0
ファイル: graph_buttons.c プロジェクト: diekev/blender
/* settings for 'transform channel' driver variable type */
static void graph_panel_driverVar__transChan(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar = &dvar->targets[0];
	Object *ob = (Object *)dtar->id;
	PointerRNA dtar_ptr;
	uiLayout *col, *sub;
	
	/* initialize RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar, &dtar_ptr); 
	
	/* properties */
	col = uiLayoutColumn(layout, true);
	uiLayoutSetRedAlert(col, (dtar->flag & DTAR_FLAG_INVALID)); /* XXX: per field... */
	uiItemR(col, &dtar_ptr, "id", 0, IFACE_("Object"), ICON_NONE);
	
	if (dtar->id && GS(dtar->id->name) == ID_OB && ob->pose) {
		PointerRNA tar_ptr;
		
		RNA_pointer_create(dtar->id, &RNA_Pose, ob->pose, &tar_ptr);
		uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", IFACE_("Bone"), ICON_BONE_DATA);
	}
		
	sub = uiLayoutColumn(layout, true);
	uiItemR(sub, &dtar_ptr, "transform_type", 0, NULL, ICON_NONE);
	uiItemR(sub, &dtar_ptr, "transform_space", 0, IFACE_("Space"), ICON_NONE);
}
コード例 #4
0
/* settings for 'location difference' driver variable type */
static void graph_panel_driverVar__locDiff(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar  = &dvar->targets[0];
	DriverTarget *dtar2 = &dvar->targets[1];
	Object *ob1 = (Object *)dtar->id;
	Object *ob2 = (Object *)dtar2->id;
	PointerRNA dtar_ptr, dtar2_ptr;
	uiLayout *col;
	
	/* initialize RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar,  &dtar_ptr); 
	RNA_pointer_create(id, &RNA_DriverTarget, dtar2, &dtar2_ptr); 
	
	/* Bone 1 */
	col = uiLayoutColumn(layout, true);
	uiLayoutSetRedAlert(col, (dtar->flag & DTAR_FLAG_INVALID)); /* XXX: per field... */
	uiTemplateAnyID(col, &dtar_ptr, "id", "id_type", IFACE_("Ob/Bone 1:"));
		
	if (dtar->id && GS(dtar->id->name) == ID_OB && ob1->pose) {
		PointerRNA tar_ptr;
		
		RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr);
		uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
	
	uiLayoutSetRedAlert(col, false); /* we can clear it again now - it's only needed when creating the ID/Bone fields */
	uiItemR(col, &dtar_ptr, "transform_space", 0, NULL, ICON_NONE);
	
	col = uiLayoutColumn(layout, true);
	uiLayoutSetRedAlert(col, (dtar2->flag & DTAR_FLAG_INVALID)); /* XXX: per field... */
	uiTemplateAnyID(col, &dtar2_ptr, "id", "id_type", IFACE_("Ob/Bone 2:"));
		
	if (dtar2->id && GS(dtar2->id->name) == ID_OB && ob2->pose) {
		PointerRNA tar_ptr;
		
		RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr);
		uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
		
	uiLayoutSetRedAlert(col, false); /* we can clear it again now - it's only needed when creating the ID/Bone fields */
	uiItemR(col, &dtar2_ptr, "transform_space", 0, NULL, ICON_NONE);
}
コード例 #5
0
ファイル: graph_buttons.c プロジェクト: OldBrunet/BGERTPS
/* settings for 'location difference' driver variable type */
static void graph_panel_driverVar__locDiff(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar= &dvar->targets[0];
	DriverTarget *dtar2= &dvar->targets[1];
	Object *ob1 = (Object *)dtar->id;
	Object *ob2 = (Object *)dtar2->id;
	PointerRNA dtar_ptr, dtar2_ptr;
	uiLayout *col;
	
	/* initialise RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar, &dtar_ptr); 
	RNA_pointer_create(id, &RNA_DriverTarget, dtar2, &dtar2_ptr); 
	
	/* Bone 1 */
	col= uiLayoutColumn(layout, 1);
		uiTemplateAnyID(col, &dtar_ptr, "id", "id_type", "Ob/Bone 1:");
		
		if (dtar->id && ob1->pose) {
			PointerRNA tar_ptr;
			
			RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr);
			uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
		}
		
		uiItemR(col, &dtar_ptr, "use_local_space_transform", 0, NULL, ICON_NONE);
	
	col= uiLayoutColumn(layout, 1);
		uiTemplateAnyID(col, &dtar2_ptr, "id", "id_type", "Ob/Bone 2:");
		
		if (dtar2->id && ob2->pose) {
			PointerRNA tar_ptr;
			
			RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr);
			uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
		}
		
		uiItemR(col, &dtar2_ptr, "use_local_space_transform", 0, NULL, ICON_NONE);
}
コード例 #6
0
ファイル: graph_buttons.c プロジェクト: diekev/blender
/* FIXME: 1) Must be same armature for both dtars, 2) Alignment issues... */
static void graph_panel_driverVar__rotDiff(uiLayout *layout, ID *id, DriverVar *dvar)
{
	DriverTarget *dtar = &dvar->targets[0];
	DriverTarget *dtar2 = &dvar->targets[1];
	Object *ob1 = (Object *)dtar->id;
	Object *ob2 = (Object *)dtar2->id;
	PointerRNA dtar_ptr, dtar2_ptr;
	uiLayout *col;
	
	/* initialize RNA pointer to the target */
	RNA_pointer_create(id, &RNA_DriverTarget, dtar, &dtar_ptr); 
	RNA_pointer_create(id, &RNA_DriverTarget, dtar2, &dtar2_ptr); 
	
	/* Bone 1 */
	col = uiLayoutColumn(layout, true);
	uiLayoutSetRedAlert(col, (dtar->flag & DTAR_FLAG_INVALID)); /* XXX: per field... */
	uiItemR(col, &dtar_ptr, "id", 0, IFACE_("Bone 1"), ICON_NONE);
	
	if (dtar->id && GS(dtar->id->name) == ID_OB && ob1->pose) {
		PointerRNA tar_ptr;
		
		RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr);
		uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
	
	col = uiLayoutColumn(layout, true);
	uiLayoutSetRedAlert(col, (dtar2->flag & DTAR_FLAG_INVALID)); /* XXX: per field... */
	uiItemR(col, &dtar2_ptr, "id", 0, IFACE_("Bone 2"), ICON_NONE);
		
	if (dtar2->id && GS(dtar2->id->name) == ID_OB && ob2->pose) {
		PointerRNA tar_ptr;
		
		RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr);
		uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
	}
}
コード例 #7
0
static void rna_uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, const char *propname,
                               struct PointerRNA *searchptr, const char *searchpropname,
                               const char *name, const char *text_ctxt, int translate, int icon)
{
	PropertyRNA *prop = RNA_struct_find_property(ptr, propname);

	if (!prop) {
		RNA_warning("property not found: %s.%s", RNA_struct_identifier(ptr->type), propname);
		return;
	}

	/* Get translated name (label). */
	name = rna_translate_ui_text(name, text_ctxt, NULL, prop, translate);

	/* XXX This will search property again :( */
	uiItemPointerR(layout, ptr, propname, searchptr, searchpropname, name, icon);
}