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

Ton Roosendaal ton at blender.org
Thu Dec 11 16:38:16 CET 2008


Revision: 17789
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17789
Author:   ton
Date:     2008-12-11 16:38:16 +0100 (Thu, 11 Dec 2008)

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

TimeLine window pulldowns work sorta (for the options that were coded :)

Still trying to bring back code without recoding uiDefButs. In future these
will get directly operator stuff linked. For time being made a simple 
operator call function, like:

WM_operator_call(C, "ED_MARKER_OT_add");

and for forcing operator to run in the main region-window:

WM_operator_call_rwin(C, "ED_MARKER_OT_add");

These calls also work for modal operators, like marker grab in this case.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/include/ED_util.h
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    branches/blender2.5/blender/source/blender/editors/util/ed_util.c
    branches/blender2.5/blender/source/blender/windowmanager/WM_api.h
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_event_system.c

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_util.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_util.h	2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_util.h	2008-12-11 15:38:16 UTC (rev 17789)
@@ -34,8 +34,8 @@
 #define YIC 20
 
 void apply_keyb_grid(float *val, float fac1, float fac2, float fac3, int invert);
-
 int GetButStringLength(char *str);
+char *windowtype_pup(void);
 
 #endif /* ED_UTIL_H */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2008-12-11 15:38:16 UTC (rev 17789)
@@ -115,6 +115,7 @@
 
 /* utilities */
 struct View2D *UI_view2d_fromcontext(const struct bContext *C);
+struct View2D *UI_view2d_fromcontext_rwin(const struct bContext *C);
 void UI_view2d_getscale(struct View2D *v2d, float *x, float *y);
 
 

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2008-12-11 15:38:16 UTC (rev 17789)
@@ -1226,6 +1226,22 @@
 	return &(C->region->v2d);
 }
 
+/* same as above, but it returns regionwindow. Utility for pulldowns or buttons */
+View2D *UI_view2d_fromcontext_rwin(const bContext *C)
+{
+	if (C->area == NULL) return NULL;
+	if (C->region == NULL) return NULL;
+	if (C->region->regiontype!=RGN_TYPE_WINDOW) {
+		ARegion *ar= C->area->regionbase.first;
+		for(; ar; ar= ar->next)
+			if(ar->regiontype==RGN_TYPE_WINDOW)
+				return &(ar->v2d);
+		return NULL;
+	}
+	return &(C->region->v2d);
+}
+
+
 /* Calculate the scale per-axis of the drawing-area
  *	- Is used to inverse correct drawing of icons, etc. that need to follow view 
  *	  but not be affected by scale

Modified: branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_time/time_header.c	2008-12-11 14:59:57 UTC (rev 17788)
+++ branches/blender2.5/blender/source/blender/editors/space_time/time_header.c	2008-12-11 15:38:16 UTC (rev 17789)
@@ -62,93 +62,7 @@
 
 /* ************************ header time area region *********************** */
 
-static void start_animated_screen(SpaceTime *stime)
-{
-// XXX	add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws);
-	
-//	if(stime->redraws & TIME_WITH_SEQ_AUDIO)
-//		audiostream_start( CFRA );
-	
-//	BKE_ptcache_set_continue_physics((stime->redraws & TIME_CONTINUE_PHYSICS));
-}
 
-static void end_animated_screen(SpaceTime *stime)
-{
-//	rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM);
-	
-//	audiostream_stop();
-//	BKE_ptcache_set_continue_physics(0);
-}
-
-#define B_TL_REW		751
-#define B_TL_PLAY		752
-#define B_TL_FF			753
-#define B_TL_PREVKEY	754
-#define B_TL_NEXTKEY	755
-#define B_TL_STOP		756
-#define B_TL_PREVIEWON	757
-#define B_TL_INSERTKEY	758
-#define B_TL_DELETEKEY	759
-
-void do_time_buttons(bContext *C, void *arg, int event)
-{
-	SpaceTime *stime= C->area->spacedata.first;
-	
-	switch(event) {
-		
-		case B_TL_REW:
-			CFRA= PSFRA;
-			//update_for_newframe();
-			break;
-		case B_TL_PLAY:
-			start_animated_screen(stime);
-			break;
-		case B_TL_STOP:
-			end_animated_screen(stime);
-			//allqueue(REDRAWALL, 0);
-			break;
-		case B_TL_FF:
-			/* end frame */
-			CFRA= PEFRA;
-			//update_for_newframe();
-			break;
-		case B_TL_PREVKEY:
-			/* previous keyframe */
-			//nextprev_timeline_key(-1);
-			break;
-		case B_TL_NEXTKEY:
-			/* next keyframe */
-			//nextprev_timeline_key(1);
-			break;
-			
-		case B_TL_PREVIEWON:
-			if (G.scene->r.psfra) {
-				/* turn on preview range */
-				G.scene->r.psfra= G.scene->r.sfra;
-				G.scene->r.pefra= G.scene->r.efra;
-			}
-			else {
-				/* turn off preview range */
-				G.scene->r.psfra= 0;
-				G.scene->r.pefra= 0;
-			}
-			//BIF_undo_push("Set anim-preview range");
-			//allqueue(REDRAWALL, 0);
-			break;
-			
-		case B_TL_INSERTKEY:
-			/* insert keyframe */
-			//common_insertkey();
-			//allqueue(REDRAWTIME, 1);
-			break;
-		case B_TL_DELETEKEY:
-			/* delete keyframe */
-			//common_deletekey();
-			//allqueue(REDRAWTIME, 1);
-			break;
-	}
-}
-
 static void do_time_redrawmenu(bContext *C, void *arg, int event)
 {
 	SpaceTime *stime= C->area->spacedata.first;
@@ -162,7 +76,7 @@
 	}
 	else {
 		if(event==1001) {
-//			button(&G.scene->r.frs_sec,1,120,"FPS:");
+//			button(&C->scene->r.frs_sec,1,120,"FPS:");
 		}
 	}
 }
@@ -206,7 +120,7 @@
 	
 	uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
 	
-	sprintf(str, "Set Frames/Sec (%d/%f)", G.scene->r.frs_sec, G.scene->r.frs_sec_base);
+	sprintf(str, "Set Frames/Sec (%d/%f)", C->scene->r.frs_sec, C->scene->r.frs_sec_base);
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, str,	 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1001, "");
 	
 	uiDefBut(block, SEPR, 0, "",        0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
@@ -234,6 +148,7 @@
 {
 	ScrArea *curarea= C->area;
 	SpaceTime *stime= curarea->spacedata.first;
+	View2D *v2d= UI_view2d_fromcontext_rwin(C);
 	int first;
 	
 	switch(event) {
@@ -242,19 +157,21 @@
 			//	start_animated_screen(stime);
 			break;
 		case 3: /* View All */
-			first= G.scene->r.sfra;
-			if(first >= G.scene->r.efra) first= G.scene->r.efra;
-				G.v2d->cur.xmin=G.v2d->tot.xmin= (float)first-2;
-			G.v2d->cur.xmax=G.v2d->tot.xmax= (float)G.scene->r.efra+2;
+			if(v2d) {
+				first= C->scene->r.sfra;
+				if(first >= C->scene->r.efra) first= C->scene->r.efra;
+					v2d->cur.xmin=v2d->tot.xmin= (float)first-2;
+				v2d->cur.xmax=v2d->tot.xmax= (float)C->scene->r.efra+2;
 			
-			//test_view2d(G.v2d, curarea->winx, curarea->winy);
-			//scrarea_queue_winredraw(curarea);
+				WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
+			}
 			break;
 		case 4: /* Maximize Window */
 			/* using event B_FULL */
 			break;
 		case 5:	/* show time or frames */
 			stime->flag ^= TIME_DRAWFRAMES;
+			WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
 			break;
 		case 6:
 			//nextprev_marker(1);
@@ -272,21 +189,24 @@
 			//timeline_frame_to_center();
 			break;
 		case 11:
-			//G.v2d->flag ^= V2D_VIEWSYNC_X;
-			//if(G.v2d->flag & V2D_VIEWSYNC_X)
+			if(v2d) {
+			//v2d->flag ^= V2D_VIEWSYNC_X;
+			//if(v2d->flag & V2D_VIEWSYNC_X)
 			//	view2d_do_locks(curarea, 0);
+			}
 				break;
 		case 12: /* only show keyframes from selected data */
 			stime->flag ^= TIME_ONLYACTSEL;
+			WM_event_add_notifier(C, WM_NOTE_AREA_REDRAW, 0, NULL);
 			break;
 	}
-	//allqueue(REDRAWVIEW3D, 0);
 }
 
 static uiBlock *time_viewmenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused)
 {
 	ScrArea *curarea= C->area;
 	SpaceTime *stime= curarea->spacedata.first;
+	View2D *v2d= UI_view2d_fromcontext_rwin(C);
 	uiBlock *block;
 	short yco= 0, menuwidth=120;
 	
@@ -317,7 +237,7 @@
 	
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Center View|C", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, "");
 	uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "View All|Home", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
-	uiDefIconTextBut(block, BUTM, 1, (handle->region->v2d.flag & V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, 
+	uiDefIconTextBut(block, BUTM, 1, (v2d->flag & V2D_VIEWSYNC_X)?ICON_CHECKBOX_HLT:ICON_CHECKBOX_DEHLT, 
 					 "Lock Time to Other Windows|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 11, "");
 	
 //	if (!curarea->full) 
@@ -343,46 +263,41 @@
 {
 	switch(event) {
 		case 1: /*Set as Start */
-			if (G.scene->r.psfra) {
-				if (G.scene->r.pefra < CFRA)
-					G.scene->r.pefra= CFRA;
-				G.scene->r.psfra= CFRA;
+			if (C->scene->r.psfra) {
+				if (C->scene->r.pefra < CFRA)
+					C->scene->r.pefra= CFRA;
+				C->scene->r.psfra= CFRA;
 			}				
 			else
-				G.scene->r.sfra = CFRA;
-			//allqueue(REDRAWALL, 1);
+				C->scene->r.sfra = CFRA;
+			WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
 			break;
 		case 2: /* Set as End */
-			if (G.scene->r.psfra) {
-				if (CFRA < G.scene->r.psfra)
-					G.scene->r.psfra= CFRA;
-				G.scene->r.pefra= CFRA;
+			if (C->scene->r.psfra) {
+				if (CFRA < C->scene->r.psfra)
+					C->scene->r.psfra= CFRA;
+				C->scene->r.pefra= CFRA;
 			}				
 			else
-				G.scene->r.efra = CFRA;
-			//allqueue(REDRAWALL, 1);
+				C->scene->r.efra = CFRA;
+			WM_event_add_notifier(C, WM_NOTE_WINDOW_REDRAW, 0, NULL);
 			break;
 		case 3: /* Add Marker */
-			//add_marker(CFRA);
+			WM_operator_call_rwin(C, "ED_MARKER_OT_add");
 			break;
 		case 4: /* Remove Marker */
-			//remove_marker();
+			WM_operator_call_rwin(C, "ED_MARKER_OT_delete");
 			break;
 		case 5: /* Rename Marker */
 			//rename_marker();
 			break;
 		case 6: /* Grab Marker */
-			//transform_markers('g', 0);
+			WM_operator_call_rwin(C, "ED_MARKER_OT_move");
 			break;
 		case 7: /* duplicate marker */
-			//duplicate_marker();
+			WM_operator_call_rwin(C, "ED_MARKER_OT_duplicate");
 			break;
 	}
-	//allqueue(REDRAWTIME, 0);
-	//allqueue(REDRAWIPO, 0);
-	//allqueue(REDRAWACTION, 0);
-	//allqueue(REDRAWNLA, 0);
-	//allqueue(REDRAWSOUND, 0);
 }
 
 static uiBlock *time_framemenu(bContext *C, uiMenuBlockHandle *handle, void *arg_unused)
@@ -429,12 +344,104 @@
 	return block;
 }
 
+static void start_animated_screen(SpaceTime *stime)
+{
+	// XXX	add_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM, stime->redraws);
+	
+	//	if(stime->redraws & TIME_WITH_SEQ_AUDIO)
+	//		audiostream_start( CFRA );
+	
+	//	BKE_ptcache_set_continue_physics((stime->redraws & TIME_CONTINUE_PHYSICS));
+}
+
+static void end_animated_screen(SpaceTime *stime)
+{
+	//	rem_screenhandler(G.curscreen, SCREEN_HANDLER_ANIM);
+	
+	//	audiostream_stop();
+	//	BKE_ptcache_set_continue_physics(0);
+}
+
+#define B_REDRAWALL		750
+#define B_TL_REW		751
+#define B_TL_PLAY		752
+#define B_TL_FF			753
+#define B_TL_PREVKEY	754
+#define B_TL_NEXTKEY	755
+#define B_TL_STOP		756
+#define B_TL_PREVIEWON	757
+#define B_TL_INSERTKEY	758
+#define B_TL_DELETEKEY	759
+
 #define B_NEWSPACE 0
 #define B_FLIPINFOMENU 0

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list