Revision: 29602
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29602
Author:   billrey
Date:     2010-06-22 01:20:44 +0200 (Tue, 22 Jun 2010)

Log Message:
-----------
Added ability to add and remove text boxes back from Blender 2.4x. One on those 
small things missing.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/properties_data_curve.py
    trunk/blender/source/blender/editors/curve/curve_intern.h
    trunk/blender/source/blender/editors/curve/curve_ops.c
    trunk/blender/source/blender/editors/curve/editfont.c

Modified: trunk/blender/release/scripts/ui/properties_data_curve.py
===================================================================
--- trunk/blender/release/scripts/ui/properties_data_curve.py   2010-06-21 
22:16:13 UTC (rev 29601)
+++ trunk/blender/release/scripts/ui/properties_data_curve.py   2010-06-21 
23:20:44 UTC (rev 29602)
@@ -367,22 +367,37 @@
 
         text = context.curve
         wide_ui = context.region.width > narrowui
+        
+        split = layout.split()
+        col = split.column()
+        col.operator("font.textbox_add", icon='ZOOMIN')
+        if wide_ui:
+            col = split.column()
+        
+        for i, box in enumerate(text.textboxes):
+            
+            boxy = layout.box()
+            
+            split = boxy.split()
+            
+            col = split.column()
+                
+            col2 = col.column(align=True)
+            col2.label(text="Dimensions:")
+            col2.prop(box, "width", text="Width")
+            col2.prop(box, "height", text="Height")
 
-        for box in text.textboxes:
-            split = layout.box().split()
-
-            col = split.column(align=True)
-            col.label(text="Dimensions:")
-            col.prop(box, "width", text="Width")
-            col.prop(box, "height", text="Height")
-
             if wide_ui:
-                col = split.column(align=True)
-            col.label(text="Offset:")
-            col.prop(box, "x", text="X")
-            col.prop(box, "y", text="Y")
+                col = split.column()
+                
+            row = col.row()
+            row.label(text="Offset:")
+            row.operator("font.textbox_remove", text='', icon='X').index = i
+            
+            col2 = col.column(align=True)
+            col2.prop(box, "x", text="X")
+            col2.prop(box, "y", text="Y")        
 
-
 classes = [
     DATA_PT_context_curve,
     DATA_PT_shape_curve,

Modified: trunk/blender/source/blender/editors/curve/curve_intern.h
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_intern.h   2010-06-21 
22:16:13 UTC (rev 29601)
+++ trunk/blender/source/blender/editors/curve/curve_intern.h   2010-06-21 
23:20:44 UTC (rev 29602)
@@ -66,6 +66,9 @@
 void FONT_OT_open(struct wmOperatorType *ot);
 void FONT_OT_unlink(struct wmOperatorType *ot);
 
+void FONT_OT_textbox_add(struct wmOperatorType *ot);
+void FONT_OT_textbox_remove(struct wmOperatorType *ot);
+
 /* editcurve.c */
 void CURVE_OT_hide(struct wmOperatorType *ot);
 void CURVE_OT_reveal(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/curve/curve_ops.c
===================================================================
--- trunk/blender/source/blender/editors/curve/curve_ops.c      2010-06-21 
22:16:13 UTC (rev 29601)
+++ trunk/blender/source/blender/editors/curve/curve_ops.c      2010-06-21 
23:20:44 UTC (rev 29602)
@@ -81,6 +81,9 @@
        
        WM_operatortype_append(FONT_OT_open);
        WM_operatortype_append(FONT_OT_unlink);
+       
+       WM_operatortype_append(FONT_OT_textbox_add);
+       WM_operatortype_append(FONT_OT_textbox_remove);
 
        WM_operatortype_append(CURVE_OT_hide);
        WM_operatortype_append(CURVE_OT_reveal);

Modified: trunk/blender/source/blender/editors/curve/editfont.c
===================================================================
--- trunk/blender/source/blender/editors/curve/editfont.c       2010-06-21 
22:16:13 UTC (rev 29601)
+++ trunk/blender/source/blender/editors/curve/editfont.c       2010-06-21 
23:20:44 UTC (rev 29602)
@@ -1363,6 +1363,99 @@
        RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the 
cursor position.");
 }
 
+
+/*********************** textbox add operator *************************/
+static int textbox_poll(bContext *C)
+{
+       Object *ob = CTX_data_active_object(C);
+       
+       if (!ED_operator_object_active_editable(C) ) return 0;
+       if (ob->type != OB_FONT) return 0;
+       
+       return 1;
+}
+
+static int textbox_add_exec(bContext *C, wmOperator *op)
+{
+       Object *obedit= CTX_data_active_object(C);
+       Curve *cu= obedit->data;
+       int i;
+       
+       if (cu->totbox < 256) {
+               for (i = cu->totbox; i>cu->actbox; i--) cu->tb[i]= cu->tb[i-1];
+               cu->tb[cu->actbox]= cu->tb[cu->actbox-1];
+               cu->actbox++;
+               cu->totbox++;
+       }
+       
+       WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
+       return OPERATOR_FINISHED;
+}
+
+void FONT_OT_textbox_add(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Add Textbox";
+       ot->description= "Add a new text box";
+       ot->idname= "FONT_OT_textbox_add";
+       
+       /* api callbacks */
+       ot->exec= textbox_add_exec;
+       ot->poll= textbox_poll;
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       
+       
+}
+
+
+
+/*********************** textbox remove operator *************************/
+
+
+
+static int textbox_remove_exec(bContext *C, wmOperator *op)
+{
+       Object *obedit= CTX_data_active_object(C);
+       Curve *cu= obedit->data;
+       int i;
+       int index = RNA_int_get(op->ptr, "index");
+       
+       
+       if (cu->totbox > 1) {
+               for (i = index; i < cu->totbox; i++) cu->tb[i]= cu->tb[i+1];
+               cu->totbox--;
+               if (cu->actbox >= index)
+                       cu->actbox--;
+       }
+       
+       WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
+       
+       return OPERATOR_FINISHED;
+}
+
+void FONT_OT_textbox_remove(wmOperatorType *ot)
+{
+       /* identifiers */
+       ot->name= "Remove Textbox";
+       ot->description= "Remove the textbox";
+       ot->idname= "FONT_OT_textbox_remove";
+       
+       /* api callbacks */
+       ot->exec= textbox_remove_exec;
+       ot->poll= textbox_poll;
+       
+       /* flags */
+       ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+       
+       RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "The current 
text box.", 0, INT_MAX);
+       
+       
+}
+
+
+
 /***************** editmode enter/exit ********************/
 
 void make_editText(Object *obedit)


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to