[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18125] branches/blender2.5/blender/source /blender: 2.5
Ton Roosendaal
ton at blender.org
Sun Dec 28 19:10:24 CET 2008
Revision: 18125
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18125
Author: ton
Date: 2008-12-28 19:10:24 +0100 (Sun, 28 Dec 2008)
Log Message:
-----------
2.5
Recode of 'select all objects by type' to show
how to use itterators.
Modified Paths:
--------------
branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h 2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_context.h 2008-12-28 18:10:24 UTC (rev 18125)
@@ -137,6 +137,9 @@
int CTX_data_selected_objects(const bContext *C, ListBase *list);
int CTX_data_selected_bases(const bContext *C, ListBase *list);
+int CTX_data_visible_objects(const bContext *C, ListBase *list);
+int CTX_data_visible_bases(const bContext *C, ListBase *list);
+
struct Object *CTX_data_active_object(const bContext *C);
struct Base *CTX_data_active_base(const bContext *C);
Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/context.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/context.c 2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/context.c 2008-12-28 18:10:24 UTC (rev 18125)
@@ -365,6 +365,16 @@
return ctx_data_collection_get(C, CTX_data_selected_bases, list);
}
+int CTX_data_visible_objects(const bContext *C, ListBase *list)
+{
+ return ctx_data_collection_get(C, CTX_data_visible_objects, list);
+}
+
+int CTX_data_visible_bases(const bContext *C, ListBase *list)
+{
+ return ctx_data_collection_get(C, CTX_data_visible_bases, list);
+}
+
struct Object *CTX_data_active_object(const bContext *C)
{
return ctx_data_pointer_get(C, CTX_data_active_object);
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c 2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c 2008-12-28 18:10:24 UTC (rev 18125)
@@ -266,6 +266,20 @@
return 1;
}
+ else if(ELEM(member, CTX_data_visible_objects, CTX_data_visible_bases)) {
+ for(base=scene->base.first; base; base=base->next) {
+ if(base->lay & v3d->lay) {
+ if((base->object->restrictflag & OB_RESTRICT_VIEW)==0) {
+ if(member == CTX_data_selected_objects)
+ CTX_data_list_add(result, base->object);
+ else
+ CTX_data_list_add(result, base);
+ }
+ }
+ }
+
+ return 1;
+ }
else if(member == CTX_data_active_base) {
if(scene->basact && (scene->basact->lay & v3d->lay))
if((scene->basact->object->restrictflag & OB_RESTRICT_VIEW)==0)
Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c 2008-12-28 15:28:09 UTC (rev 18124)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_select.c 2008-12-28 18:10:24 UTC (rev 18125)
@@ -194,6 +194,7 @@
else if (mode==BA_DESELECT) {
base->flag &= ~SELECT;
}
+ base->object->flag= base->flag;
}
}
@@ -762,25 +763,6 @@
BIF_undo_push("Select Random");
}
-/* selects all objects of a particular type, on currently visible layers */
-void selectall_type(Scene *scene, View3D *v3d, short obtype)
-{
- Base *base;
-
- base= FIRSTBASE;
- while(base) {
- if((base->lay & v3d->lay) &&
- (base->object->type == obtype) &&
- (base->object->restrictflag & OB_RESTRICT_VIEW)==0
- ) {
- select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
- }
- base= base->next;
- }
-
- BIF_undo_push("Select all per type");
-}
/* selects all objects on a particular layer */
void selectall_layer(Scene *scene, unsigned int layernum)
{
@@ -792,7 +774,6 @@
(base->object->restrictflag & OB_RESTRICT_VIEW)==0
) {
select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
}
base= base->next;
}
@@ -903,7 +884,6 @@
if (base->flag & SELECT) {
if(b!=base) {
select_base_v3d(base, BA_DESELECT);
- base->object->flag= base->flag;
}
}
}
@@ -1207,9 +1187,6 @@
else select_base_v3d(basact, BA_SELECT);
}
- /* copy */
- basact->object->flag= basact->flag;
-
if(oldbasact != basact) {
set_active_base(scene, basact);
}
@@ -1565,8 +1542,6 @@
select_base_v3d(base, BA_SELECT);
else
select_base_v3d(base, BA_DESELECT);
-
- base->object->flag= base->flag;
}
col+=4; /* next color */
@@ -1660,16 +1635,19 @@
static int view3d_select_by_type_exec(bContext *C, wmOperator *op)
{
- ScrArea *sa= CTX_wm_area(C);
ARegion *ar= CTX_wm_region(C);
- View3D *v3d= sa->spacedata.first;
- Scene *scene= CTX_data_scene(C);
short obtype;
obtype = RNA_enum_get(op->ptr, "type");
- selectall_type(scene, v3d, obtype);
+ CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+ if(base->object->type==obtype) {
+ select_base_v3d(base, BA_SELECT);
+ }
+ }
+ CTX_DATA_END;
+ /* undo? */
ED_region_tag_redraw(ar);
return OPERATOR_FINISHED;
@@ -1980,9 +1958,7 @@
int dx= base->sx-x;
int dy= base->sy-y;
if( dx*dx + dy*dy < radius*radius)
-
select_base_v3d(base, BA_SELECT);
- base->object->flag= base->flag;
}
}
}
More information about the Bf-blender-cvs
mailing list