[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23266] trunk/blender/source/blender: Object mode Selection options brought back for view3d.select

Campbell Barton ideasman42 at gmail.com
Wed Sep 16 03:15:31 CEST 2009


Revision: 23266
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23266
Author:   campbellbarton
Date:     2009-09-16 03:15:30 +0200 (Wed, 16 Sep 2009)

Log Message:
-----------
Object mode Selection options brought back for view3d.select
- 'center', while Ctrl is held select objects from their center location
- 'enumerate', while Alt is held, give a list of objects under the mouse
- Object selection menu now uses icons with names
- operator object.select_name(name, extend=False)
- keybindings so combinations of Ctrl/Alt/Shift can be used (like in 2.4x)
- logic text input field was using deprecated ID_SCRIPT rather then ID_TXT

details
- added comments to DNA_ID.h ID types
- removed unused ID types Sector and Life
- added uiIconFromID() to get an icon from the object.
- using name for selection is weak but currently there isnt a really good way to do this.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readblenentry.c
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_utils.c
    trunk/blender/source/blender/editors/object/object_intern.h
    trunk/blender/source/blender/editors/object/object_ops.c
    trunk/blender/source/blender/editors/object/object_select.c
    trunk/blender/source/blender/editors/space_logic/logic_window.c
    trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c
    trunk/blender/source/blender/makesdna/DNA_ID.h

Modified: trunk/blender/source/blender/blenloader/intern/readblenentry.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readblenentry.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/blenloader/intern/readblenentry.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -99,7 +99,6 @@
 	{ ID_IP,		"Ipo",		IDTYPE_FLAGS_ISLINKABLE}, 
 	{ ID_KE,		"Key",		0}, 
 	{ ID_LA,		"Lamp",		IDTYPE_FLAGS_ISLINKABLE}, 
-	{ ID_LF,		"Life",		0}, 
 	{ ID_LI,		"Library",	0}, 
 	{ ID_LT,		"Lattice",	IDTYPE_FLAGS_ISLINKABLE}, 
 	{ ID_MA,		"Material", IDTYPE_FLAGS_ISLINKABLE}, 
@@ -110,7 +109,6 @@
 	{ ID_SCE,		"Scene",	IDTYPE_FLAGS_ISLINKABLE}, 
 	{ ID_SCR,		"Screen",	0}, 
 	{ ID_SEQ,		"Sequence",	0}, 
-	{ ID_SE,		"Sector",	0}, 
 	{ ID_SO,		"Sound",	IDTYPE_FLAGS_ISLINKABLE}, 
 	{ ID_TE,		"Texture",	IDTYPE_FLAGS_ISLINKABLE}, 
 	{ ID_TXT,		"Text",		IDTYPE_FLAGS_ISLINKABLE}, 

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2009-09-16 01:15:30 UTC (rev 23266)
@@ -420,6 +420,8 @@
 						short x1, short y1, short x2, short y2, void *idpp, char *tip);
 int uiDefIDPoinButs(uiBlock *block, struct Main *main, struct ID *parid, struct ID *id, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events);
 
+int uiIconFromID(struct ID *id);
+
 uiBut *uiDefPulldownBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
 uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
 uiBut *uiDefIconTextMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, int icon, char *str, short x1, short y1, short x2, short y2, char *tip);

Modified: trunk/blender/source/blender/editors/interface/interface_utils.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_utils.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/interface/interface_utils.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -33,6 +33,7 @@
 #include "DNA_color_types.h"
 #include "DNA_listBase.h"
 #include "DNA_material_types.h"
+#include "DNA_lamp_types.h""
 #include "DNA_object_types.h"
 #include "DNA_screen_types.h"
 #include "DNA_texture_types.h"
@@ -509,6 +510,64 @@
 	return x;
 }
 
+/* currently only object-data types */
+int uiIconFromID(ID *id)
+{
+	if (id==NULL)
+		return 0;
+
+	switch(GS(id->name)) {
+		case ID_OB:
+		{
+			Object *ob= (Object *)id;
+
+			switch(ob->type) {
+				case OB_EMPTY:
+					return ICON_EMPTY_DATA;
+				case OB_CURVE:
+					return ICON_CURVE_DATA;
+				case OB_SURF:
+					return ICON_SURFACE_DATA;
+				case OB_FONT:
+					return ICON_FONT_DATA;
+			}
+
+			return uiIconFromID(ob->data);
+		}
+		case ID_ME:
+			return ICON_MESH_DATA;
+		case ID_AR:
+			return ICON_ARMATURE_DATA;
+		case ID_MB:
+			return ICON_META_DATA;
+		case ID_CA:
+			return ICON_CAMERA_DATA;
+		case ID_LT:
+			return ICON_LATTICE_DATA;
+		case ID_CU:
+			return ICON_CURVE_DATA;
+		case ID_LA:
+		{
+			Lamp *la= (Lamp *)id;
+			switch(la->type) {
+			case LA_LOCAL:
+				return ICON_LAMP_POINT;
+			case LA_SUN:
+				return ICON_LAMP_SUN;
+			case LA_SPOT:
+				return ICON_LAMP_SPOT;
+			case LA_HEMI:
+				return ICON_LAMP_HEMI;
+			case LA_AREA:
+				return ICON_LAMP_AREA;
+			}
+			return ICON_LAMP_DATA;
+		}
+	}
+
+	return 0;
+}
+
 /* ****************************** default button callbacks ******************* */
 /* ************ LEGACY WARNING, only to get things work with 2.48 code! ****** */
 

Modified: trunk/blender/source/blender/editors/object/object_intern.h
===================================================================
--- trunk/blender/source/blender/editors/object/object_intern.h	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/object/object_intern.h	2009-09-16 01:15:30 UTC (rev 23266)
@@ -79,6 +79,7 @@
 void OBJECT_OT_select_linked(struct wmOperatorType *ot);
 void OBJECT_OT_select_grouped(struct wmOperatorType *ot);
 void OBJECT_OT_select_mirror(struct wmOperatorType *ot);
+void OBJECT_OT_select_name(struct wmOperatorType *ot);
 
 /* object_add.c */
 void OBJECT_OT_add(struct wmOperatorType *ot);

Modified: trunk/blender/source/blender/editors/object/object_ops.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_ops.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/object/object_ops.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -102,6 +102,7 @@
 	WM_operatortype_append(OBJECT_OT_select_linked);
 	WM_operatortype_append(OBJECT_OT_select_grouped);
 	WM_operatortype_append(OBJECT_OT_select_mirror);
+	WM_operatortype_append(OBJECT_OT_select_name); /* XXX - weak, not compat with linked objects */
 
 	WM_operatortype_append(GROUP_OT_group_create);
 	WM_operatortype_append(GROUP_OT_objects_remove);

Modified: trunk/blender/source/blender/editors/object/object_select.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_select.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/object/object_select.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -923,6 +923,59 @@
 	RNA_def_enum(ot->srna, "seltype", prop_select_types, 1, "Selection", "Extend selection or clear selection then select");
 }
 
+
+static int object_select_name_exec(bContext *C, wmOperator *op)
+{
+	char *name= RNA_string_get_alloc(op->ptr, "name", NULL, 0);
+	short extend= RNA_boolean_get(op->ptr, "extend");
+	short changed = 0;
+
+	if(!extend) {
+		CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
+			ED_base_object_select(base, BA_DESELECT);
+		}
+		CTX_DATA_END;
+	}
+
+	CTX_DATA_BEGIN(C, Base*, base, selectable_bases) {
+		if(strcmp(name, base->object->id.name+2)==0) {
+			ED_base_object_select(base, BA_SELECT);
+			changed= 1;
+		}
+	}
+	CTX_DATA_END;
+
+	MEM_freeN(name);
+
+	/* undo? */
+	if(changed) {
+		WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C));
+		return OPERATOR_FINISHED;
+	}
+	else {
+		return OPERATOR_CANCELLED;
+	}
+}
+
+void OBJECT_OT_select_name(wmOperatorType *ot)
+{
+
+	/* identifiers */
+	ot->name= "Select Name";
+	ot->description = "Select an object with this name";
+	ot->idname= "OBJECT_OT_select_name";
+
+	/* api callbacks */
+	ot->exec= object_select_name_exec;
+	ot->poll= ED_operator_scene_editable;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	RNA_def_string(ot->srna, "name", "", 0, "Name", "Object name to select.");
+	RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first.");
+}
+
 /**************************** Select Random ****************************/
 
 static int object_select_random_exec(bContext *C, wmOperator *op)

Modified: trunk/blender/source/blender/editors/space_logic/logic_window.c
===================================================================
--- trunk/blender/source/blender/editors/space_logic/logic_window.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/space_logic/logic_window.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -1534,7 +1534,7 @@
 		uiBlockBeginAlign(block);
 		uiDefButI(block, MENU, B_REDR, "Execution Method%t|Script%x0|Module%x1", xco+4,yco-23, 66, 19, &pc->mode, 0, 0, 0, 0, "Python script type (textblock or module - faster)");
 		if(pc->mode==0)
-			uiDefIDPoinBut(block, test_scriptpoin_but, ID_SCRIPT, 1, "", xco+70,yco-23,width-74, 19, &pc->text, "Blender textblock to run as a script");
+			uiDefIDPoinBut(block, test_scriptpoin_but, ID_TXT, 1, "", xco+70,yco-23,width-74, 19, &pc->text, "Blender textblock to run as a script");
 		else {
 			uiDefBut(block, TEX, 1, "", xco+70,yco-23,(width-70)-25, 19, pc->module, 0, 63, 0, 0, "Module name and function to run e.g. \"someModule.main\". Internal texts and external python files can be used");
 			uiDefButBitI(block, TOG, CONT_PY_DEBUG, B_REDR, "D", (xco+width)-25, yco-23, 19, 19, &pc->flag, 0, 0, 0, 0, "Continuously reload the module from disk for editing external modules without restarting");

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_ops.c	2009-09-16 00:59:55 UTC (rev 23265)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_ops.c	2009-09-16 01:15:30 UTC (rev 23266)
@@ -201,7 +201,25 @@
 
 	/* selection*/
 	WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, 0, 0);
-	RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", TRUE);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "center", TRUE);
+	RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "enumerate", TRUE);
+
+	/* selection key-combinations */
+	km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
+	RNA_boolean_set(km->ptr, "center", TRUE);
+	RNA_boolean_set(km->ptr, "extend", TRUE);
+	km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_CTRL|KM_ALT, 0);
+	RNA_boolean_set(km->ptr, "center", TRUE);
+	RNA_boolean_set(km->ptr, "enumerate", TRUE);
+	km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0);
+	RNA_boolean_set(km->ptr, "extend", TRUE);
+	RNA_boolean_set(km->ptr, "enumerate", TRUE);
+	km = WM_keymap_add_item(keymap, "VIEW3D_OT_select", SELECTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL|KM_ALT, 0);
+	RNA_boolean_set(km->ptr, "center", TRUE);
+	RNA_boolean_set(km->ptr, "extend", TRUE);
+	RNA_boolean_set(km->ptr, "enumerate", TRUE);
+
 	WM_keymap_add_item(keymap, "VIEW3D_OT_select_border", BKEY, KM_PRESS, 0, 0);
 	WM_keymap_add_item(keymap, "VIEW3D_OT_select_lasso", EVT_TWEAK_A, KM_ANY, KM_CTRL, 0);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list