[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49011] branches/soc-2012-bratwurst: Created floating buttons for changing the edit selection mode, vert edge or face.

Jorge Rodriguez bs.vino at gmail.com
Tue Jul 17 23:59:21 CEST 2012


Revision: 49011
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49011
Author:   vino
Date:     2012-07-17 21:59:20 +0000 (Tue, 17 Jul 2012)
Log Message:
-----------
Created floating buttons for changing the edit selection mode, vert edge or face. These buttons work similar to the manipulator buttons in that pressing one shuts off the others, unless shift is down.

Modified Paths:
--------------
    branches/soc-2012-bratwurst/release/scripts/startup/bl_ui/space_view3d.py
    branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_scene.c
    branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_space.c

Modified: branches/soc-2012-bratwurst/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- branches/soc-2012-bratwurst/release/scripts/startup/bl_ui/space_view3d.py	2012-07-17 20:56:01 UTC (rev 49010)
+++ branches/soc-2012-bratwurst/release/scripts/startup/bl_ui/space_view3d.py	2012-07-17 21:59:20 UTC (rev 49011)
@@ -2711,6 +2711,7 @@
 
     def draw(self, context):
         view = context.space_data
+        tools = context.tool_settings
 
         if bpy.context.user_preferences.edit.floating_controls == 'BOTTOM' or bpy.context.user_preferences.edit.floating_controls == 'TOP':
             layout = self.layout
@@ -2725,6 +2726,13 @@
             row.prop(view, "use_manipulator_rotate", text="", icon='MAN_ROT', clearfield=True)
             row.prop(view, "use_manipulator_scale", text="", icon='MAN_SCALE', clearfield=True)
 
+            if bpy.context.object.mode == 'EDIT':
+                row.separator()
+            
+                row.prop(tools, "use_select_vertex", text="", clearfield=True)
+                row.prop(tools, "use_select_edge", text="", clearfield=True)
+                row.prop(tools, "use_select_face", text="", clearfield=True)
+
         elif bpy.context.user_preferences.edit.floating_controls == 'LEFT' or bpy.context.user_preferences.edit.floating_controls == 'RIGHT':
             layout = self.layout
 
@@ -2740,8 +2748,16 @@
             column.prop(view, "use_manipulator_rotate", text="", icon='MAN_ROT', clearfield=True)
             column.prop(view, "use_manipulator_scale", text="", icon='MAN_SCALE', clearfield=True)
 
+            if bpy.context.object.mode == 'EDIT':
+                column.separator()
+            
+                column.prop(tools, "use_select_vertex", text="", clearfield=True)
+                column.prop(tools, "use_select_edge", text="", clearfield=True)
+                column.prop(tools, "use_select_face", text="", clearfield=True)
 
 
+
+
 def register():
     bpy.utils.register_module(__name__)
 

Modified: branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_scene.c	2012-07-17 20:56:01 UTC (rev 49010)
+++ branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_scene.c	2012-07-17 21:59:20 UTC (rev 49011)
@@ -1220,6 +1220,87 @@
 	}
 }
 
+static void rna_Scene_editmesh_use_select_vertex_set(PointerRNA *ptr, int value)
+{
+	Scene *scene = (Scene *)ptr->id.data;
+	ToolSettings *ts = (ToolSettings *)ptr->data;
+	BMEditMesh *em = NULL;
+
+	if (value)
+		ts->selectmode |= SCE_SELECT_VERTEX;
+	else
+		ts->selectmode &= ~SCE_SELECT_VERTEX;
+
+	if (scene->basact && scene->basact->object && scene->basact->object->type == OB_MESH) {
+		em = BMEdit_FromObject(scene->basact->object);
+	}
+
+	if (em) {
+		em->selectmode = ts->selectmode;
+		EDBM_selectmode_set(em);
+	}
+}
+
+static void rna_Scene_editmesh_use_select_edge_set(PointerRNA *ptr, int value)
+{
+	Scene *scene = (Scene *)ptr->id.data;
+	ToolSettings *ts = (ToolSettings *)ptr->data;
+	BMEditMesh *em = NULL;
+
+	if (value)
+		ts->selectmode |= SCE_SELECT_EDGE;
+	else
+		ts->selectmode &= ~SCE_SELECT_EDGE;
+
+	if (scene->basact && scene->basact->object && scene->basact->object->type == OB_MESH) {
+		em = BMEdit_FromObject(scene->basact->object);
+	}
+
+	if (em) {
+		em->selectmode = ts->selectmode;
+		EDBM_selectmode_set(em);
+	}
+}
+
+static void rna_Scene_editmesh_use_select_face_set(PointerRNA *ptr, int value)
+{
+	Scene *scene = (Scene *)ptr->id.data;
+	ToolSettings *ts = (ToolSettings *)ptr->data;
+	BMEditMesh *em = NULL;
+
+	if (value)
+		ts->selectmode |= SCE_SELECT_FACE;
+	else
+		ts->selectmode &= ~SCE_SELECT_FACE;
+
+	if (scene->basact && scene->basact->object && scene->basact->object->type == OB_MESH) {
+		em = BMEdit_FromObject(scene->basact->object);
+	}
+
+	if (em) {
+		em->selectmode = ts->selectmode;
+		EDBM_selectmode_set(em);
+	}
+}
+
+static void rna_Scene_editmesh_use_select_mode_clear(PointerRNA *ptr)
+{
+	Scene *scene = (Scene *)ptr->id.data;
+	ToolSettings *ts = (ToolSettings *)ptr->data;
+	BMEditMesh *em = NULL;
+
+	ts->selectmode = 0;
+
+	if (scene->basact && scene->basact->object && scene->basact->object->type == OB_MESH) {
+		em = BMEdit_FromObject(scene->basact->object);
+	}
+
+	if (em) {
+		em->selectmode = ts->selectmode;
+		EDBM_selectmode_set(em);
+	}
+}
+
 static void rna_Scene_editmesh_select_mode_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
 {
 	Mesh *me = NULL;
@@ -1727,6 +1808,27 @@
 	RNA_def_property_ui_text(prop, "Mesh Selection Mode", "Which mesh elements selection works on");
 	RNA_def_property_update(prop, 0, "rna_Scene_editmesh_select_mode_update");
 
+	prop = RNA_def_property(srna, "use_select_vertex", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "selectmode", SCE_SELECT_VERTEX);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_use_select_vertex_set", "rna_Scene_editmesh_use_select_mode_clear");
+	RNA_def_property_ui_text(prop, "Vertex", "Edit vertices. Shift-click for multiple modes");
+	RNA_def_property_ui_icon(prop, ICON_VERTEXSEL, 0);
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+	prop = RNA_def_property(srna, "use_select_edge", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "selectmode", SCE_SELECT_EDGE);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_use_select_edge_set", "rna_Scene_editmesh_use_select_mode_clear");
+	RNA_def_property_ui_text(prop, "Edge", "Edit edges. Shift-click for multiple modes");
+	RNA_def_property_ui_icon(prop, ICON_EDGESEL, 0);
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+	prop = RNA_def_property(srna, "use_select_face", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "selectmode", SCE_SELECT_FACE);
+	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_use_select_face_set", "rna_Scene_editmesh_use_select_mode_clear");
+	RNA_def_property_ui_text(prop, "Face", "Edit faces. Shift-click for multiple modes");
+	RNA_def_property_ui_icon(prop, ICON_FACESEL, 0);
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
 	prop = RNA_def_property(srna, "vertex_group_weight", PROP_FLOAT, PROP_FACTOR);
 	RNA_def_property_float_sdna(prop, NULL, "vgroup_weight");
 	RNA_def_property_ui_text(prop, "Vertex Group Weight", "Weight to assign in vertex groups");

Modified: branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_space.c	2012-07-17 20:56:01 UTC (rev 49010)
+++ branches/soc-2012-bratwurst/source/blender/makesrna/intern/rna_space.c	2012-07-17 21:59:20 UTC (rev 49011)
@@ -1657,19 +1657,19 @@
 	
 	prop = RNA_def_property(srna, "use_manipulator_translate", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE);
-	RNA_def_property_ui_text(prop, "Manipulator Translate", "Translation manipulator. Shift-click for multiple modes.");
+	RNA_def_property_ui_text(prop, "Manipulator Translate", "Translation manipulator. Shift-click for multiple modes");
 	RNA_def_property_ui_icon(prop, ICON_MAN_TRANS, 0);
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 	
 	prop = RNA_def_property(srna, "use_manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE);
-	RNA_def_property_ui_text(prop, "Manipulator Rotate", "Rotation manipulator. Shift-click for multiple modes.");
+	RNA_def_property_ui_text(prop, "Manipulator Rotate", "Rotation manipulator. Shift-click for multiple modes");
 	RNA_def_property_ui_icon(prop, ICON_MAN_ROT, 0);
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 	
 	prop = RNA_def_property(srna, "use_manipulator_scale", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE);
-	RNA_def_property_ui_text(prop, "Manipulator Scale", "Scaling manipulator. Shift-click for multiple modes.");
+	RNA_def_property_ui_text(prop, "Manipulator Scale", "Scaling manipulator. Shift-click for multiple modes");
 	RNA_def_property_ui_icon(prop, ICON_MAN_SCALE, 0);
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 	




More information about the Bf-blender-cvs mailing list