[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21172] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Fri Jun 26 17:48:09 CEST 2009


Revision: 21172
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21172
Author:   ton
Date:     2009-06-26 17:48:09 +0200 (Fri, 26 Jun 2009)

Log Message:
-----------
2.5

Part one (of probably many :) of Operator review/validation.
Nothing final nor defined, it's reseach :)

- Added tool buttons in "Toolbar" (Tkey). Just four examples
  for objectmode, and six for mesh editmode.

(Review in progress is operator internal state vs context, what
do redo exactly, undo vs redo syncing, when op->invoke or not,
etc. This has to be pinned down exactly and frozen asap)

- On undo, clear redo-operator-stack for now (won't work)
- Added call to better detect active/current view3d region.
  ED_view3d_context_rv3d(C)
- Fixed some operators that missed correct redo (add-prim etc).

Later more fun!

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_object.h
    branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_add.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
    branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/blender2.5/blender/source/blender/editors/util/undo.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm.c

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_object.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_object.h	2009-06-26 15:48:09 UTC (rev 21172)
@@ -63,6 +63,7 @@
 #define EM_FREEDATA		1
 #define EM_FREEUNDO		2
 #define EM_WAITCURSOR	4
+#define EM_DO_UNDO		8
 void ED_object_exit_editmode(struct bContext *C, int flag);
 void ED_object_enter_editmode(struct bContext *C, int flag);
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_view3d.h	2009-06-26 15:48:09 UTC (rev 21172)
@@ -132,6 +132,8 @@
 
 /* modes */
 void ED_view3d_exit_paint_modes(struct bContext *C);
+/* get 3d region from context, also if mouse is in header or toolbar */
+struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C);
 
 #endif /* ED_VIEW3D_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -104,7 +104,7 @@
 		SpaceButs *sbuts= sa->spacedata.first;
 		return sbuts->align;
 	}
-	else if(ar->regiontype==RGN_TYPE_UI)
+	else if(ELEM(ar->regiontype, RGN_TYPE_UI, RGN_TYPE_TOOLS))
 		return BUT_VERTICAL;
 	
 	return 0;

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_add.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_add.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_add.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -1276,7 +1276,7 @@
 	Object *obedit= CTX_data_edit_object(C);
 	Scene *scene = CTX_data_scene(C);
 	View3D *v3d =CTX_wm_view3d(C);
-	RegionView3D *rv3d= CTX_wm_region_view3d(C);
+	RegionView3D *rv3d= ED_view3d_context_rv3d(C);
 	float *curs, mat[3][3], vmat[3][3], cmat[3][3], imat[3][3];
 	
 	Mat4One(primmat);

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_mods.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -3242,7 +3242,7 @@
 void MESH_OT_select_all_toggle(wmOperatorType *ot)
 {
 	/* identifiers */
-	ot->name= "Select or Deselect All";
+	ot->name= "Select/Deselect All";
 	ot->idname= "MESH_OT_select_all_toggle";
 	
 	/* api callbacks */

Modified: branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/mesh/editmesh_tools.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -787,7 +787,7 @@
 	Object *obedit= CTX_data_edit_object(C);
 	EditMesh *em= BKE_mesh_get_editmesh((Mesh *)obedit->data);
 
-	RegionView3D *rv3d = CTX_wm_region_view3d(C);		
+	RegionView3D *rv3d = ED_view3d_context_rv3d(C);		
 		
 	int steps = RNA_int_get(op->ptr,"steps");
 	
@@ -949,7 +949,7 @@
 {
 	Scene *scene = CTX_data_scene(C);
 	View3D *v3d = CTX_wm_view3d(C);
-	RegionView3D *rv3d= CTX_wm_region_view3d(C);
+	RegionView3D *rv3d= ED_view3d_context_rv3d(C);
 	
 	RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
 	RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[2]);
@@ -1056,7 +1056,7 @@
 {
 	Scene *scene = CTX_data_scene(C);
 	View3D *v3d = CTX_wm_view3d(C);
-	RegionView3D *rv3d= CTX_wm_region_view3d(C);
+	RegionView3D *rv3d= ED_view3d_context_rv3d(C);
 	
 	RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d));
 	RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[1]);

Modified: branches/blender2.5/blender/source/blender/editors/object/object_edit.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/object/object_edit.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -340,7 +340,7 @@
 	
 	if(obedit==NULL || obedit->type!=OB_MESH) {
 		object_add_type(C, OB_MESH);
-		ED_object_enter_editmode(C, 0);
+		ED_object_enter_editmode(C, EM_DO_UNDO);
 		newob = 1;
 	}
 	else DAG_object_flush_update(CTX_data_scene(C), obedit, OB_RECALC_DATA);
@@ -398,8 +398,8 @@
 	
 	ot->poll= ED_operator_scene_editable;
 	
-	/* flags */
-	ot->flag= 0;
+	/* flags: no register or undo, this operator calls operators */
+	ot->flag= 0; //OPTYPE_REGISTER|OPTYPE_UNDO;
 	
 	RNA_def_enum(ot->srna, "type", prop_mesh_types, 0, "Primitive", "");
 }
@@ -1395,7 +1395,8 @@
 	
 	DAG_scene_sort(CTX_data_scene(C));
 	ED_anim_dag_flush_update(C);
-	
+	WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
+
 	return OPERATOR_FINISHED;
 }
 
@@ -2600,7 +2601,8 @@
 	CTX_DATA_END;
 	
 	DAG_scene_sort(CTX_data_scene(C));
-	ED_anim_dag_flush_update(C);	
+	ED_anim_dag_flush_update(C);
+	WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
 	
 	return OPERATOR_FINISHED;
 }
@@ -2648,7 +2650,7 @@
 	ot->poll= ED_operator_object_active;
 	
 	/* flags */
-	ot->flag= 0;
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
 	
 	RNA_def_enum(ot->srna, "type", prop_make_parent_types, 0, "Type", "");
 }
@@ -3349,6 +3351,7 @@
 		WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene);
 	}
 	
+	if(flag & EM_DO_UNDO) ED_undo_push(C, "Enter Editmode");
 	if(flag & EM_WAITCURSOR) waitcursor(0);
 }
 

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	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -122,8 +122,26 @@
 	return arnew;
 }
 
+/* ****************************************************** */
 
+/* function to always find a regionview3d context inside 3D window */
+RegionView3D *ED_view3d_context_rv3d(bContext *C)
+{
+	RegionView3D *rv3d= CTX_wm_region_view3d(C);
+	
+	if(rv3d==NULL) {
+		ScrArea *sa =CTX_wm_area(C);
+		if(sa->spacetype==SPACE_VIEW3D) {
+			ARegion *ar;
+			for(ar= sa->regionbase.first; ar; ar= ar->next)
+				if(ar->regiontype==RGN_TYPE_WINDOW)
+					return ar->regiondata;
+		}
+	}
+	return rv3d;
+}
 
+
 /* ******************** default callbacks for view3d space ***************** */
 
 static SpaceLink *view3d_new(const bContext *C)

Modified: branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -134,7 +134,7 @@
 	
 	if(op==NULL)
 		return;
-	if(op->type->poll && op->type->poll(C)==0)
+	if(op->type->poll && op->type->poll((bContext *)C)==0)
 		return;
 	
 	uiBlockSetFunc(block, redo_cb, op, NULL);
@@ -148,10 +148,59 @@
 	uiDefAutoButsRNA(C, pa->layout, &ptr, 1);
 }
 
+static void view3d_panel_tools(const bContext *C, Panel *pa)
+{
+	Object *obedit= CTX_data_edit_object(C);
+//	Object *obact = CTX_data_active_object(C);
+	uiLayout *col;
+	
+	if(obedit) {
+		if(obedit->type==OB_MESH) {
+			
+			// void uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDProperty *properties, int context)
+			col= uiLayoutColumn(pa->layout, 1);
+			uiItemFullO(col, NULL, 0, "MESH_OT_delete", NULL, WM_OP_INVOKE_REGION_WIN);
+			
+			col= uiLayoutColumn(pa->layout, 1);
+			uiItemFullO(col, NULL, 0, "MESH_OT_subdivide", NULL, WM_OP_INVOKE_REGION_WIN);
+			
+			col= uiLayoutColumn(pa->layout, 1);
+			uiItemFullO(col, NULL, 0, "MESH_OT_primitive_monkey_add", NULL, WM_OP_INVOKE_REGION_WIN);
+			uiItemFullO(col, NULL, 0, "MESH_OT_primitive_uv_sphere_add", NULL, WM_OP_INVOKE_REGION_WIN);
+			
+			col= uiLayoutColumn(pa->layout, 1);
+			uiItemFullO(col, NULL, 0, "MESH_OT_select_all_toggle", NULL, WM_OP_INVOKE_REGION_WIN);
+			
+			col= uiLayoutColumn(pa->layout, 1);
+			uiItemFullO(col, NULL, 0, "MESH_OT_spin", NULL, WM_OP_INVOKE_REGION_WIN);
+			uiItemFullO(col, NULL, 0, "MESH_OT_screw", NULL, WM_OP_INVOKE_REGION_WIN);
+			
+		}
+	}
+	else {
+		
+		col= uiLayoutColumn(pa->layout, 1);
+		uiItemFullO(col, NULL, 0, "OBJECT_OT_delete", NULL, WM_OP_INVOKE_REGION_WIN);
+		uiItemFullO(col, NULL, 0, "OBJECT_OT_primitive_add", NULL, WM_OP_INVOKE_REGION_WIN);
+		
+		col= uiLayoutColumn(pa->layout, 1);
+		uiItemFullO(col, NULL, 0, "OBJECT_OT_parent_set", NULL, WM_OP_INVOKE_REGION_WIN);
+		uiItemFullO(col, NULL, 0, "OBJECT_OT_parent_clear", NULL, WM_OP_INVOKE_REGION_WIN);
+		
+	}
+}
+
+
 void view3d_toolbar_register(ARegionType *art)
 {
 	PanelType *pt;
 
+	pt= MEM_callocN(sizeof(PanelType), "spacetype view3d panel tools");
+	strcpy(pt->idname, "VIEW3D_PT_tools");
+	strcpy(pt->label, "Tools");
+	pt->draw= view3d_panel_tools;
+	BLI_addtail(&art->paneltypes, pt);
+	
 	pt= MEM_callocN(sizeof(PanelType), "spacetype view3d panel last operator");
 	strcpy(pt->idname, "VIEW3D_PT_last_operator");
 	strcpy(pt->label, "Last Operator");

Modified: branches/blender2.5/blender/source/blender/editors/util/undo.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/util/undo.c	2009-06-26 15:36:45 UTC (rev 21171)
+++ branches/blender2.5/blender/source/blender/editors/util/undo.c	2009-06-26 15:48:09 UTC (rev 21172)
@@ -183,6 +183,8 @@
 
 static int ed_undo_exec(bContext *C, wmOperator *op)
 {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list