[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23868] trunk/blender: disallow editing particle settings when first entering particle editmode, would crash instantly when changing the amount for eg.

Campbell Barton ideasman42 at gmail.com
Thu Oct 15 20:27:41 CEST 2009


Revision: 23868
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23868
Author:   campbellbarton
Date:     2009-10-15 20:27:41 +0200 (Thu, 15 Oct 2009)

Log Message:
-----------
disallow editing particle settings when first entering particle editmode, would crash instantly when changing the amount for eg.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/buttons_particle.py
    trunk/blender/source/blender/editors/space_buttons/buttons_context.c

Modified: trunk/blender/release/scripts/ui/buttons_particle.py
===================================================================
--- trunk/blender/release/scripts/ui/buttons_particle.py	2009-10-15 17:59:42 UTC (rev 23867)
+++ trunk/blender/release/scripts/ui/buttons_particle.py	2009-10-15 18:27:41 UTC (rev 23868)
@@ -6,8 +6,8 @@
 from buttons_physics_common import basic_force_field_settings_ui
 from buttons_physics_common import basic_force_field_falloff_ui
 
-def particle_panel_enabled(psys):
-	return psys.point_cache.baked==False and psys.edited==False
+def particle_panel_enabled(context, psys):
+	return psys.point_cache.baked==False and psys.edited==False and (not context.particle_system_editable)
 	
 def particle_panel_poll(context):
 	psys = context.particle_system
@@ -78,7 +78,7 @@
 					return
 				
 				row=col.row()
-				row.enabled = particle_panel_enabled(psys)
+				row.enabled = particle_panel_enabled(context, psys)
 				row.itemR(part, "type", text="")
 				row.itemR(psys, "seed")
 				
@@ -89,7 +89,7 @@
 					else:
 						split.itemL(text="")
 					row = split.row()
-					row.enabled = particle_panel_enabled(psys)
+					row.enabled = particle_panel_enabled(context, psys)
 					row.itemR(part, "hair_step")
 					if psys.edited==True:
 						if psys.global_hair:
@@ -99,7 +99,7 @@
 							layout.itemO("particle.disconnect_hair")
 							layout.itemL(text="")
 				elif part.type=='REACTOR':
-					split.enabled = particle_panel_enabled(psys)
+					split.enabled = particle_panel_enabled(context, psys)
 					split.itemR(psys, "reactor_target_object")
 					split.itemR(psys, "reactor_target_particle_system", text="Particle System")
 		
@@ -118,7 +118,7 @@
 		psys = context.particle_system
 		part = psys.settings
 		
-		layout.enabled = particle_panel_enabled(psys) and not psys.multiple_caches
+		layout.enabled = particle_panel_enabled(context, psys) and not psys.multiple_caches
 		
 		row = layout.row()
 		row.active = part.distribution != 'GRID'
@@ -221,7 +221,7 @@
 
 		psys = context.particle_system
 		
-		point_cache_ui(self, psys.point_cache, particle_panel_enabled(psys), not psys.hair_dynamics, 0)
+		point_cache_ui(self, psys.point_cache, particle_panel_enabled(context, psys), not psys.hair_dynamics, 0)
 
 class PARTICLE_PT_velocity(ParticleButtonsPanel):
 	__label__ = "Velocity"
@@ -239,7 +239,7 @@
 		psys = context.particle_system
 		part = psys.settings
 		
-		layout.enabled = particle_panel_enabled(psys)
+		layout.enabled = particle_panel_enabled(context, psys)
 	
 		split = layout.split()
 			
@@ -284,7 +284,7 @@
 		psys = context.particle_system
 		part = psys.settings
 		
-		layout.enabled = particle_panel_enabled(psys)
+		layout.enabled = particle_panel_enabled(context, psys)
 		
 		split = layout.split()
 		split.itemL(text="Initial Rotation:")
@@ -322,7 +322,7 @@
 		psys = context.particle_system
 		part = psys.settings
 		
-		layout.enabled = particle_panel_enabled(psys)
+		layout.enabled = particle_panel_enabled(context, psys)
 
 		row = layout.row()
 		row.itemR(part, "physics_type", expand=True)
@@ -461,7 +461,7 @@
 		boids = context.particle_system.settings.boids
 		layout = self.layout
 		
-		layout.enabled = particle_panel_enabled(context.particle_system)
+		layout.enabled = particle_panel_enabled(context, context.particle_system)
 		
 		# Currently boids can only use the first state so these are commented out for now.
 		#row = layout.row()

Modified: trunk/blender/source/blender/editors/space_buttons/buttons_context.c
===================================================================
--- trunk/blender/source/blender/editors/space_buttons/buttons_context.c	2009-10-15 17:59:42 UTC (rev 23867)
+++ trunk/blender/source/blender/editors/space_buttons/buttons_context.c	2009-10-15 18:27:41 UTC (rev 23868)
@@ -554,7 +554,7 @@
 		static const char *dir[] = {
 			"world", "object", "mesh", "armature", "lattice", "curve",
 			"meta_ball", "lamp", "camera", "material", "material_slot",
-			"texture", "texture_slot", "bone", "edit_bone", "particle_system",
+			"texture", "texture_slot", "bone", "edit_bone", "particle_system", "particle_system_editable",
 			"cloth", "soft_body", "fluid", "smoke", "collision", "brush", NULL};
 
 		CTX_data_dir_set(result, dir);
@@ -658,6 +658,13 @@
 		set_pointer_type(path, result, &RNA_ParticleSystem);
 		return 1;
 	}
+	else if(CTX_data_equals(member, "particle_system_editable")) {
+		if(PE_poll(C))
+			set_pointer_type(path, result, &RNA_ParticleSystem);
+		else
+			CTX_data_pointer_set(result, NULL, &RNA_ParticleSystem, NULL);
+		return 1;
+	}	
 	else if(CTX_data_equals(member, "cloth")) {
 		PointerRNA *ptr= get_pointer_type(path, &RNA_Object);
 





More information about the Bf-blender-cvs mailing list