Revision: 24698
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24698
Author:   campbellbarton
Date:     2009-11-20 11:00:54 +0100 (Fri, 20 Nov 2009)

Log Message:
-----------
- dir() now works for collection functions
- group.objects.link/unlink use exceptions rather then return values
- scene.add_object/remove_object --> scene.objects.link/unlink

Modified Paths:
--------------
    trunk/blender/release/scripts/io/export_obj.py
    trunk/blender/release/scripts/io/import_scene_3ds.py
    trunk/blender/release/scripts/io/import_scene_obj.py
    trunk/blender/release/scripts/op/add_mesh_torus.py
    trunk/blender/source/blender/makesrna/intern/rna_group.c
    trunk/blender/source/blender/makesrna/intern/rna_scene.c
    trunk/blender/source/blender/makesrna/intern/rna_scene_api.c
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/release/scripts/io/export_obj.py
===================================================================
--- trunk/blender/release/scripts/io/export_obj.py      2009-11-20 06:31:49 UTC 
(rev 24697)
+++ trunk/blender/release/scripts/io/export_obj.py      2009-11-20 10:00:54 UTC 
(rev 24698)
@@ -485,10 +485,10 @@
                                        newob = bpy.data.add_object('MESH', 
'temp_object')
                                        newob.data = me
                                        # if we forget to set Object.data - 
crash
-                                       scene.add_object(newob)
+                                       scene.objects.link(newob)
                                        newob.convert_to_triface(scene)
                                        # mesh will still be there
-                                       scene.remove_object(newob)
+                                       scene.objects.unlink(newob)
                        '''
                        
                        # Make our own list so it can be sorted to reduce 
context switching

Modified: trunk/blender/release/scripts/io/import_scene_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/import_scene_3ds.py        2009-11-20 
06:31:49 UTC (rev 24697)
+++ trunk/blender/release/scripts/io/import_scene_3ds.py        2009-11-20 
10:00:54 UTC (rev 24698)
@@ -465,7 +465,7 @@
                        # bmesh.transform(contextMatrix)
                        ob = bpy.data.add_object("MESH", tempName)
                        ob.data = bmesh
-                       SCN.add_object(ob)
+                       SCN.objects.link(ob)
 #                      ob = SCN_OBJECTS.new(bmesh, tempName)
                        '''
                        if contextMatrix_tx:
@@ -766,7 +766,7 @@
 
                        ob = bpy.data.add_object("LAMP", "Lamp")
                        ob.data = bpy.data.add_lamp("Lamp")
-                       SCN.add_object(ob)
+                       SCN.objects.link(ob)
                        
                        contextLamp[1]= ob.data
 #                      contextLamp[1]= bpy.data.lamps.new()

Modified: trunk/blender/release/scripts/io/import_scene_obj.py
===================================================================
--- trunk/blender/release/scripts/io/import_scene_obj.py        2009-11-20 
06:31:49 UTC (rev 24697)
+++ trunk/blender/release/scripts/io/import_scene_obj.py        2009-11-20 
10:00:54 UTC (rev 24698)
@@ -864,7 +864,7 @@
        
        ob= bpy.data.add_object("MESH", "Mesh")
        ob.data= me
-       scn.add_object(ob)
+       scn.objects.link(ob)
 #      ob= scn.objects.new(me)
        new_objects.append(ob)
 

Modified: trunk/blender/release/scripts/op/add_mesh_torus.py
===================================================================
--- trunk/blender/release/scripts/op/add_mesh_torus.py  2009-11-20 06:31:49 UTC 
(rev 24697)
+++ trunk/blender/release/scripts/op/add_mesh_torus.py  2009-11-20 10:00:54 UTC 
(rev 24698)
@@ -116,7 +116,7 @@
         mesh.update()
         ob_new = bpy.data.add_object('MESH', "Torus")
         ob_new.data = mesh
-        scene.add_object(ob_new)
+        scene.objects.link(ob_new)
         scene.objects.active = ob_new
         ob_new.selected = True
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_group.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_group.c    2009-11-20 
06:31:49 UTC (rev 24697)
+++ trunk/blender/source/blender/makesrna/intern/rna_group.c    2009-11-20 
10:00:54 UTC (rev 24698)
@@ -49,16 +49,24 @@
        return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, 
((GroupObject*)internal->link)->ob);
 }
 
-static int rna_Group_objects_link(Group *group, bContext *C, Object *object)
+static void rna_Group_objects_link(Group *group, bContext *C, ReportList 
*reports, Object *object)
 {
+       if(!add_to_group(group, object, CTX_data_scene(C), NULL)) {
+               BKE_reportf(reports, RPT_ERROR, "Object \"%s\" already in group 
\"%s\".", object->id.name+2, group->id.name+2);
+               return;
+       }
+
        WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
-       return add_to_group(group, object, CTX_data_scene(C), NULL);
 }
 
-static int rna_Group_objects_unlink(Group *group, bContext *C, Object *object)
+static void rna_Group_objects_unlink(Group *group, bContext *C, ReportList 
*reports, Object *object)
 {
+       if(!rem_from_group(group, object, CTX_data_scene(C), NULL)) {
+               BKE_reportf(reports, RPT_ERROR, "Object \"%s\" not in group 
\"%s\".", object->id.name+2, group->id.name+2);
+               return;
+       }
+
        WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, &object->id);
-       return rem_from_group(group, object, CTX_data_scene(C), NULL);
 }
 
 #else
@@ -79,11 +87,8 @@
 
        /* add object */
        func= RNA_def_function(srna, "link", "rna_Group_objects_link");
-       RNA_def_function_flag(func, FUNC_USE_CONTEXT);
+       RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
        RNA_def_function_ui_description(func, "Add this object to a group");
-       /* return type */
-       parm= RNA_def_boolean(func, "success", 0, "Success", "");
-       RNA_def_function_return(func, parm);
        /* object to add */
        parm= RNA_def_pointer(func, "object", "Object", "", "Object to add.");
        RNA_def_property_flag(parm, PROP_REQUIRED);
@@ -91,10 +96,7 @@
        /* remove object */
        func= RNA_def_function(srna, "unlink", "rna_Group_objects_unlink");
        RNA_def_function_ui_description(func, "Remove this object to a group");
-       RNA_def_function_flag(func, FUNC_USE_CONTEXT);
-       /* return type */
-       parm= RNA_def_boolean(func, "success", 0, "Success", "");
-       RNA_def_function_return(func, parm);
+       RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
        /* object to remove */
        parm= RNA_def_pointer(func, "object", "Object", "", "Object to 
remove.");
        RNA_def_property_flag(parm, PROP_REQUIRED);

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c    2009-11-20 
06:31:49 UTC (rev 24697)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c    2009-11-20 
10:00:54 UTC (rev 24698)
@@ -80,6 +80,7 @@
 #include "BKE_node.h"
 #include "BKE_pointcache.h"
 #include "BKE_scene.h"
+#include "BKE_depsgraph.h"
 
 #include "BLI_threads.h"
 
@@ -97,6 +98,34 @@
        return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, 
((Base*)internal->link)->object);
 }
 
+static void rna_Scene_link_object(Scene *sce, ReportList *reports, Object *ob)
+{
+       Base *base= object_in_scene(ob, sce);
+       if (base) {
+               BKE_report(reports, RPT_ERROR, "Object is already in this 
scene.");
+               return;
+       }
+       base= scene_add_base(sce, ob);
+       ob->id.us++;
+
+       /* this is similar to what object_add_type and add_object do */
+       ob->lay= base->lay= sce->lay;
+       ob->recalc |= OB_RECALC;
+
+       DAG_scene_sort(sce);
+}
+
+static void rna_Scene_unlink_object(Scene *sce, ReportList *reports, Object 
*ob)
+{
+       Base *base= object_in_scene(ob, sce);
+       if (!base) {
+               BKE_report(reports, RPT_ERROR, "Object is not in this scene.");
+               return;
+       }
+       /* as long as ED_base_object_free_and_unlink calls free_libblock_us, we 
don't have to decrement ob->id.us */
+       ED_base_object_free_and_unlink(sce, base);
+}
+
 static void rna_Scene_skgen_etch_template_set(PointerRNA *ptr, PointerRNA 
value)
 {
        ToolSettings *ts = (ToolSettings*)ptr->data;
@@ -2176,37 +2205,25 @@
        StructRNA *srna;
        PropertyRNA *prop;
 
-//     FunctionRNA *func;
-//     PropertyRNA *parm;
+       FunctionRNA *func;
+       PropertyRNA *parm;
        
        RNA_def_property_srna(cprop, "SceneObjects");
        srna= RNA_def_struct(brna, "SceneObjects", NULL);
-       RNA_def_struct_sdna(srna, "Object");
+       RNA_def_struct_sdna(srna, "Scene");
        RNA_def_struct_ui_text(srna, "Scene Objects", "Collection of scene 
objects.");
 
-#if 0
-       /* add object */
-       func= RNA_def_function(srna, "link", "rna_Scene_objects_link");
-       RNA_def_function_flag(func, FUNC_USE_CONTEXT);
-       RNA_def_function_ui_description(func, "Add this object to this scene");
-       /* return type */
-       parm= RNA_def_boolean(func, "success", 0, "Success", "");
-       RNA_def_function_return(func, parm);
-       /* object to add */
-       parm= RNA_def_pointer(func, "object", "Object", "", "Object to add.");
+       func= RNA_def_function(srna, "link", "rna_Scene_link_object");
+       RNA_def_function_ui_description(func, "Link object to scene.");
+       RNA_def_function_flag(func, FUNC_USE_REPORTS);
+       parm= RNA_def_pointer(func, "object", "Object", "", "Object to add to 
scene.");
        RNA_def_property_flag(parm, PROP_REQUIRED);
 
-       /* remove object */
-       func= RNA_def_function(srna, "unlink", "rna_Scene_objects_unlink");
-       RNA_def_function_ui_description(func, "Remove this object to a scene");
-       RNA_def_function_flag(func, FUNC_USE_CONTEXT);
-       /* return type */
-       parm= RNA_def_boolean(func, "success", 0, "Success", "");
-       RNA_def_function_return(func, parm);
-       /* object to remove */
-       parm= RNA_def_pointer(func, "object", "Object", "", "Object to 
remove.");
+       func= RNA_def_function(srna, "unlink", "rna_Scene_unlink_object");
+       RNA_def_function_ui_description(func, "Unlink object from scene.");
+       RNA_def_function_flag(func, FUNC_USE_REPORTS);
+       parm= RNA_def_pointer(func, "object", "Object", "", "Object to remove 
from scene.");
        RNA_def_property_flag(parm, PROP_REQUIRED);
-#endif
 
        prop= RNA_def_property(srna, "active", PROP_POINTER, PROP_NONE);
        RNA_def_property_struct_type(prop, "Object");

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene_api.c        
2009-11-20 06:31:49 UTC (rev 24697)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene_api.c        
2009-11-20 10:00:54 UTC (rev 24698)
@@ -47,34 +47,6 @@
 
 #include "WM_api.h"
 
-static void rna_Scene_add_object(Scene *sce, ReportList *reports, Object *ob)
-{
-       Base *base= object_in_scene(ob, sce);
-       if (base) {
-               BKE_report(reports, RPT_ERROR, "Object is already in this 
scene.");
-               return;
-       }
-       base= scene_add_base(sce, ob);
-       ob->id.us++;
-
-       /* this is similar to what object_add_type and add_object do */
-       ob->lay= base->lay= sce->lay;
-       ob->recalc |= OB_RECALC;
-
-       DAG_scene_sort(sce);
-}
-
-static void rna_Scene_remove_object(Scene *sce, ReportList *reports, Object 
*ob)
-{
-       Base *base= object_in_scene(ob, sce);
-       if (!base) {
-               BKE_report(reports, RPT_ERROR, "Object is not in this scene.");
-               return;
-       }
-       /* as long as ED_base_object_free_and_unlink calls free_libblock_us, we 
don't have to decrement ob->id.us */
-       ED_base_object_free_and_unlink(sce, base);
-}
-
 static void rna_Scene_set_frame(Scene *sce, bContext *C, int frame)
 {
        sce->r.cfra= frame;
@@ -118,18 +90,6 @@
        FunctionRNA *func;
        PropertyRNA *parm;
 
-       func= RNA_def_function(srna, "add_object", "rna_Scene_add_object");
-       RNA_def_function_ui_description(func, "Add object to scene.");
-       RNA_def_function_flag(func, FUNC_USE_REPORTS);
-       parm= RNA_def_pointer(func, "object", "Object", "", "Object to add to 
scene.");
-       RNA_def_property_flag(parm, PROP_REQUIRED);
-

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to