[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33497] trunk/blender: bugfix [#25046] Bold and Italics checkboxes for Text objects seem to do nothing

Campbell Barton ideasman42 at gmail.com
Mon Dec 6 05:05:38 CET 2010


Revision: 33497
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33497
Author:   campbellbarton
Date:     2010-12-06 05:05:34 +0100 (Mon, 06 Dec 2010)

Log Message:
-----------
bugfix [#25046] Bold and Italics checkboxes for Text objects seem to do nothing
- Part of this report is a misunderstanding, but there was no access to bold/italic fonts. 
- Added rna access and changed the operators to use only rna properties.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_data_curve.py
    trunk/blender/source/blender/editors/curve/editfont.c
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/makesrna/intern/rna_curve.c

Modified: trunk/blender/release/scripts/ui/properties_data_curve.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_curve.py	2010-12-06 02:42:59 UTC (rev 33496)
+++ trunk/blender/release/scripts/ui/properties_data_curve.py	2010-12-06 04:05:34 UTC (rev 33497)
@@ -270,7 +270,18 @@
         text = context.curve
         char = context.curve.edit_format
 
-        layout.template_ID(text, "font", open="font.open", unlink="font.unlink")
+        row = layout.split(percentage=0.25)
+        row.label(text="Regular")
+        row.template_ID(text, "font", open="font.open", unlink="font.unlink")
+        row = layout.split(percentage=0.25)
+        row.label(text="Bold")
+        row.template_ID(text, "font_bold", open="font.open", unlink="font.unlink")
+        row = layout.split(percentage=0.25)
+        row.label(text="Italic")
+        row.template_ID(text, "font_italic", open="font.open", unlink="font.unlink")
+        row = layout.split(percentage=0.25)
+        row.label(text="Bold & Italic")
+        row.template_ID(text, "font_bold_italic", open="font.open", unlink="font.unlink")
 
         #layout.prop(text, "font")
 

Modified: trunk/blender/source/blender/editors/curve/editfont.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editfont.c	2010-12-06 02:42:59 UTC (rev 33496)
+++ trunk/blender/source/blender/editors/curve/editfont.c	2010-12-06 04:05:34 UTC (rev 33497)
@@ -1625,7 +1625,7 @@
 
 /* **************** Open Font ************** */
 
-static void open_init(bContext *C, wmOperator *op)
+static void font_ui_template_init(bContext *C, wmOperator *op)
 {
 	PropertyPointerRNA *pprop;
 	
@@ -1642,68 +1642,63 @@
 
 static int open_exec(bContext *C, wmOperator *op)
 {
-	Object *ob = CTX_data_active_object(C);
-	Curve *cu;
 	VFont *font;
 	PropertyPointerRNA *pprop;
 	PointerRNA idptr;
 	char str[FILE_MAX];
-	
 	RNA_string_get(op->ptr, "filepath", str);
 
 	font = load_vfont(str);
-	
+
 	if(!font) {
 		if(op->customdata) MEM_freeN(op->customdata);
 		return OPERATOR_CANCELLED;
 	}
-	
+
 	if(!op->customdata)
-		open_init(C, op);
+		font_ui_template_init(C, op);
 	
 	/* hook into UI */
 	pprop= op->customdata;
-	
+
 	if(pprop->prop) {
 		/* when creating new ID blocks, use is already 1, but RNA
 		 * pointer se also increases user, so this compensates it */
 		font->id.us--;
-		
+	
 		RNA_id_pointer_create(&font->id, &idptr);
 		RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr);
 		RNA_property_update(C, &pprop->ptr, pprop->prop);
-	} else if(ob && ob->type == OB_FONT) {
-		cu = ob->data;
-		id_us_min(&cu->vfont->id);
-		cu->vfont = font;
 	}
-	
-	DAG_id_tag_update(ob->data, OB_RECALC_DATA);
-	WM_event_add_notifier(C, NC_GEOM|ND_DATA|NA_EDITED, ob->data);
-	
+
 	MEM_freeN(op->customdata);
-	
+
 	return OPERATOR_FINISHED;
 }
 
 static int open_invoke(bContext *C, wmOperator *op, wmEvent *UNUSED(event))
 {
-	Object *ob = CTX_data_active_object(C);
-	Curve *cu;
 	VFont *font=NULL;
 	char *path;
-	if (ob && ob->type == OB_FONT) {
-		cu = ob->data;
-		font = cu->vfont;
+
+	PointerRNA idptr;
+	PropertyPointerRNA *pprop;
+
+	font_ui_template_init(C, op);
+
+	/* hook into UI */
+	pprop= op->customdata;
+
+	if(pprop->prop) {
+		idptr= RNA_property_pointer_get((PointerRNA *)pprop, pprop->prop);
+		font= idptr.id.data;
 	}
 
 	path = (font && strcmp(font->name, FO_BUILTIN_NAME) != 0)? font->name: U.fontdir;
-	 
+
 	if(RNA_property_is_set(op->ptr, "filepath"))
 		return open_exec(C, op);
-	
-	open_init(C, op);
-	
+
 	RNA_string_set(op->ptr, "filepath", path);
 	WM_event_add_fileselect(C, op); 
 
@@ -1729,48 +1724,27 @@
 }
 
 /******************* delete operator *********************/
-static int font_unlink_poll(bContext *C)
-{
-	Object *ob = CTX_data_active_object(C);
-	Curve *cu;
-	
-	if (!ED_operator_object_active_editable(C) ) return 0;
-	if (ob->type != OB_FONT) return 0;
-	
-	cu = ob->data;
-	if (cu && strcmp(cu->vfont->name, FO_BUILTIN_NAME)==0) return 0;
-	return 1;
-}
 
 static int font_unlink_exec(bContext *C, wmOperator *op)
 {
-	Object *ob = CTX_data_active_object(C);
-	Curve *cu;
-	VFont *font, *builtin_font;
-		
-	cu = ob->data;
-	font = cu->vfont;
+	VFont *builtin_font;
+
+	PointerRNA idptr;
+	PropertyPointerRNA pprop;
+
+	uiIDContextProperty(C, &pprop.ptr, &pprop.prop);
 	
-	if (!font) {
-		BKE_report(op->reports, RPT_ERROR, "No font datablock available to unlink.");
+	if(pprop.prop==NULL) {
+		BKE_report(op->reports, RPT_ERROR, "Incorrect context for running font unlink");
 		return OPERATOR_CANCELLED;
 	}
-	
-	if (strcmp(font->name, FO_BUILTIN_NAME)==0) {
-		BKE_report(op->reports, RPT_WARNING, "Can't unlink the default builtin font.");
-		return OPERATOR_FINISHED;
-	}
 
-	/* revert back to builtin font */
 	builtin_font = get_builtin_font();
 
-	cu->vfont = builtin_font;
-	id_us_plus(&cu->vfont->id);
-	id_us_min(&font->id);
-	
-	DAG_id_tag_update(ob->data, OB_RECALC_DATA);
-	WM_event_add_notifier(C, NC_GEOM|ND_DATA|NA_EDITED, ob->data);
-	
+	RNA_id_pointer_create(&builtin_font->id, &idptr);
+	RNA_property_pointer_set(&pprop.ptr, pprop.prop, idptr);
+	RNA_property_update(C, &pprop.ptr, pprop.prop);
+
 	return OPERATOR_FINISHED;
 }
 
@@ -1783,7 +1757,6 @@
 	
 	/* api callbacks */
 	ot->exec= font_unlink_exec;
-	ot->poll= font_unlink_poll;
 }
 
 

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-12-06 02:42:59 UTC (rev 33496)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-12-06 04:05:34 UTC (rev 33497)
@@ -421,6 +421,8 @@
 	if(id && (flag & UI_ID_DELETE)) {
 		if(unlinkop) {
 			but= uiDefIconButO(block, BUT, unlinkop, WM_OP_INVOKE_REGION_WIN, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL);
+			/* so we can access the template from operators, font unlinking needs this */
+			uiButSetNFunc(but, NULL, MEM_dupallocN(template), 0);
 		}
 		else {
 			but= uiDefIconBut(block, BUT, 0, ICON_X, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Unlink datablock, Shift + Click to force removal on save");

Modified: trunk/blender/source/blender/makesrna/intern/rna_curve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_curve.c	2010-12-06 02:42:59 UTC (rev 33496)
+++ trunk/blender/source/blender/makesrna/intern/rna_curve.c	2010-12-06 04:05:34 UTC (rev 33497)
@@ -964,11 +964,29 @@
 	RNA_def_property_flag(prop, PROP_EDITABLE);
 	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
 
+	prop= RNA_def_property(srna, "font_bold", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "vfontb");
+	RNA_def_property_ui_text(prop, "Font", "");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
+	prop= RNA_def_property(srna, "font_italic", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "vfonti");
+	RNA_def_property_ui_text(prop, "Font", "");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
+	prop= RNA_def_property(srna, "font_bold_italic", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "vfontbi");
+	RNA_def_property_ui_text(prop, "Font", "");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
+
 	prop= RNA_def_property(srna, "edit_format", PROP_POINTER, PROP_NONE);
 	RNA_def_property_pointer_sdna(prop, NULL, "curinfo");
 	RNA_def_property_ui_text(prop, "Edit Format", "Editing settings character formatting");
 	RNA_def_property_update(prop, 0, "rna_Curve_update_data");
-	
+
 	/* flags */
 	prop= RNA_def_property(srna, "use_fast_edit", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_FAST);





More information about the Bf-blender-cvs mailing list