[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24418] trunk/blender: - added particle select_inverse

Campbell Barton ideasman42 at gmail.com
Mon Nov 9 09:51:35 CET 2009


Revision: 24418
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24418
Author:   campbellbarton
Date:     2009-11-09 09:51:34 +0100 (Mon, 09 Nov 2009)

Log Message:
-----------
- added particle select_inverse
- added select root/tip to the select menu
- selection drawing updates for select more/less were not working

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d.py
    trunk/blender/source/blender/editors/physics/particle_edit.c
    trunk/blender/source/blender/editors/physics/physics_intern.h
    trunk/blender/source/blender/editors/physics/physics_ops.c

Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py	2009-11-09 08:03:43 UTC (rev 24417)
+++ trunk/blender/release/scripts/ui/space_view3d.py	2009-11-09 08:51:34 UTC (rev 24418)
@@ -306,13 +306,19 @@
 
         layout.itemO("particle.select_all_toggle", text="Select/Deselect All")
         layout.itemO("particle.select_linked")
+        layout.itemO("particle.select_inverse")
 
         layout.itemS()
 
         layout.itemO("particle.select_more")
         layout.itemO("particle.select_less")
 
+        layout.itemS()
 
+        layout.itemO("particle.select_first", text="Roots")
+        layout.itemO("particle.select_last", text="Tips")
+
+
 class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
     bl_label = "Select"
 

Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c	2009-11-09 08:03:43 UTC (rev 24417)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c	2009-11-09 08:51:34 UTC (rev 24418)
@@ -1347,6 +1347,7 @@
 static void select_root(PEData *data, int point_index)
 {
 	data->edit->points[point_index].keys->flag |= PEK_SELECT;
+	data->edit->points[point_index].flag |= PEP_EDIT_RECALC; /* redraw selection only */
 }
 
 static int select_first_exec(bContext *C, wmOperator *op)
@@ -1355,6 +1356,8 @@
 
 	PE_set_data(C, &data);
 	foreach_point(&data, select_root);
+
+	PE_update_selection(data.scene, data.ob, 1);
 	WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob);
 
 	return OPERATOR_FINISHED;
@@ -1380,6 +1383,7 @@
 {
 	PTCacheEditPoint *point = data->edit->points + point_index;
 	point->keys[point->totkey - 1].flag |= PEK_SELECT;
+	point->flag |= PEP_EDIT_RECALC; /* redraw selection only */
 }
 
 static int select_last_exec(bContext *C, wmOperator *op)
@@ -1388,6 +1392,8 @@
 
 	PE_set_data(C, &data);
 	foreach_point(&data, select_tip);
+
+	PE_update_selection(data.scene, data.ob, 1);
 	WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob);
 
 	return OPERATOR_FINISHED;
@@ -1693,8 +1699,10 @@
 	}
 
 	LOOP_KEYS {
-		if(key->flag&PEK_TAG)
+		if(key->flag&PEK_TAG) {
 			key->flag &= ~(PEK_TAG|PEK_SELECT);
+			point->flag |= PEP_EDIT_RECALC; /* redraw selection only */
+		}
 	}
 }
 
@@ -1704,6 +1712,8 @@
 
 	PE_set_data(C, &data);
 	foreach_point(&data, select_less_keys);
+
+	PE_update_selection(data.scene, data.ob, 1);
 	WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob);
 
 	return OPERATOR_FINISHED;
@@ -1752,6 +1762,7 @@
 		if(key->flag&PEK_TAG) {
 			key->flag &= ~PEK_TAG;
 			key->flag |= PEK_SELECT;
+			point->flag |= PEP_EDIT_RECALC; /* redraw selection only */
 		}
 	}
 }
@@ -1762,6 +1773,8 @@
 
 	PE_set_data(C, &data);
 	foreach_point(&data, select_more_keys);
+
+	PE_update_selection(data.scene, data.ob, 1);
 	WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob);
 
 	return OPERATOR_FINISHED;
@@ -1781,6 +1794,43 @@
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 }
 
+static int select_inverse_exec(bContext *C, wmOperator *op)
+{
+	PEData data;
+	PTCacheEdit *edit;
+	POINT_P; KEY_K;
+
+	PE_set_data(C, &data);
+
+	edit= PE_get_current(data.scene, data.ob);
+
+	LOOP_VISIBLE_POINTS {
+		LOOP_KEYS {
+			key->flag ^= PEK_SELECT;
+			point->flag |= PEP_EDIT_RECALC; /* redraw selection only */
+		}
+	}
+
+	PE_update_selection(data.scene, data.ob, 1);
+	WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob);
+
+	return OPERATOR_FINISHED;
+}
+
+void PARTICLE_OT_select_inverse(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Select Inverse";
+	ot->idname= "PARTICLE_OT_select_inverse";
+
+	/* api callbacks */
+	ot->exec= select_inverse_exec;
+	ot->poll= PE_poll;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
 /************************ rekey operator ************************/
 
 static void rekey_particle(PEData *data, int pa_index)

Modified: trunk/blender/source/blender/editors/physics/physics_intern.h
===================================================================
--- trunk/blender/source/blender/editors/physics/physics_intern.h	2009-11-09 08:03:43 UTC (rev 24417)
+++ trunk/blender/source/blender/editors/physics/physics_intern.h	2009-11-09 08:51:34 UTC (rev 24418)
@@ -42,6 +42,7 @@
 void PARTICLE_OT_select_linked(struct wmOperatorType *ot);
 void PARTICLE_OT_select_less(struct wmOperatorType *ot);
 void PARTICLE_OT_select_more(struct wmOperatorType *ot);
+void PARTICLE_OT_select_inverse(struct wmOperatorType *ot);
 
 void PARTICLE_OT_hide(struct wmOperatorType *ot);
 void PARTICLE_OT_reveal(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/physics/physics_ops.c
===================================================================
--- trunk/blender/source/blender/editors/physics/physics_ops.c	2009-11-09 08:03:43 UTC (rev 24417)
+++ trunk/blender/source/blender/editors/physics/physics_ops.c	2009-11-09 08:51:34 UTC (rev 24418)
@@ -49,6 +49,7 @@
 	WM_operatortype_append(PARTICLE_OT_select_linked);
 	WM_operatortype_append(PARTICLE_OT_select_less);
 	WM_operatortype_append(PARTICLE_OT_select_more);
+	WM_operatortype_append(PARTICLE_OT_select_inverse);
 
 	WM_operatortype_append(PARTICLE_OT_hide);
 	WM_operatortype_append(PARTICLE_OT_reveal);
@@ -98,6 +99,7 @@
 	WM_keymap_add_item(keymap, "PARTICLE_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0);
 	WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, 0, 0);
 	RNA_boolean_set(WM_keymap_add_item(keymap, "PARTICLE_OT_select_linked", LKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "deselect", 1);
+	WM_keymap_add_item(keymap, "PARTICLE_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0);
 
 	WM_keymap_add_item(keymap, "PARTICLE_OT_delete", XKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "PARTICLE_OT_delete", DELKEY, KM_PRESS, 0, 0);





More information about the Bf-blender-cvs mailing list