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

Ton Roosendaal ton at blender.org
Tue Feb 10 16:38:00 CET 2009


Revision: 18904
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18904
Author:   ton
Date:     2009-02-10 16:38:00 +0100 (Tue, 10 Feb 2009)

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

*** Proof of concept! ****

3D window Panels back, in own designated region for now.
Activate or hide it with Nkey.

Note that Background Image doesn't work yet,  Transform
Orientations probably need tests by Martin, Sculpt options
have to be recoded there by Nicholas.

The UI design sessions will of course review all of this!
We'll have to solve a lot of related topics;
- navigation (where) and context (what)
- non-overlapping layouts vs floating panels/bars
- properties vs tools (toolbars)
- drop panels and make nice (semi-automated) list views?

I've also done experiments with making the main 3d view
stay 'behind' the buttons region. That makes popping buttons
in and out less distracting, but also makes it obscuring
the view... it's not in this commit, it didn't work proper :)
To get that work it has to be handled by the internal
compositor, then it even can have fancy transparency in back.

Anyhoo, time enough to play with this a while. Especially for
Image window (paint) it can work well too.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenlib/BLI_rect.h
    branches/blender2.5/blender/source/blender/blenlib/intern/rct.c
    branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
    branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
    branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d.c
    branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    branches/blender2.5/blender/source/blender/editors/space_node/drawnode.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_edit.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_intern.h
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_ops.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_view.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/vpaint.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_screen_types.h

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_buttons.c

Modified: branches/blender2.5/blender/source/blender/blenlib/BLI_rect.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenlib/BLI_rect.h	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/blenlib/BLI_rect.h	2009-02-10 15:38:00 UTC (rev 18904)
@@ -57,6 +57,7 @@
 int  BLI_isect_rctf(struct rctf *src1, struct rctf *src2, struct rctf *dest);
 int  BLI_isect_rcti(struct rcti *src1, struct rcti *src2, struct rcti *dest);
 void BLI_union_rctf(struct rctf *rcta, struct rctf *rctb);
+void BLI_union_rcti(struct rcti *rct1, struct rcti *rct2);
 
 #ifdef __cplusplus
 }

Modified: branches/blender2.5/blender/source/blender/blenlib/intern/rct.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenlib/intern/rct.c	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/blenlib/intern/rct.c	2009-02-10 15:38:00 UTC (rev 18904)
@@ -70,7 +70,16 @@
 
 void BLI_union_rctf(rctf *rct1, rctf *rct2)
 {
+	
+	if(rct1->xmin>rct2->xmin) rct1->xmin= rct2->xmin;
+	if(rct1->xmax<rct2->xmax) rct1->xmax= rct2->xmax;
+	if(rct1->ymin>rct2->ymin) rct1->ymin= rct2->ymin;
+	if(rct1->ymax<rct2->ymax) rct1->ymax= rct2->ymax;
+}
 
+void BLI_union_rcti(rcti *rct1, rcti *rct2)
+{
+	
 	if(rct1->xmin>rct2->xmin) rct1->xmin= rct2->xmin;
 	if(rct1->xmax<rct2->xmax) rct1->xmax= rct2->xmax;
 	if(rct1->ymin>rct2->ymin) rct1->ymin= rct2->ymin;

Modified: branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/armature/armature_intern.h	2009-02-10 15:38:00 UTC (rev 18904)
@@ -32,7 +32,6 @@
 struct wmOperatorType;
 
 /* editarmature.c */
-void armature_bone_rename(Object *ob, char *oldnamep, char *newnamep);
 
 void ARMATURE_OT_align_bones(struct wmOperatorType *ot);
 void ARMATURE_OT_calculate_roll(struct wmOperatorType *ot);

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_armature.h	2009-02-10 15:38:00 UTC (rev 18904)
@@ -109,6 +109,7 @@
 
 void auto_align_armature(struct Scene *scene, struct View3D *v3d, short mode);
 void unique_editbone_name (ListBase *edbo, char *name);
+void armature_bone_rename(Object *ob, char *oldnamep, char *newnamep);
 
 void undo_push_armature(struct bContext *C, char *name);
 

Modified: branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_view2d.h	2009-02-10 15:38:00 UTC (rev 18904)
@@ -54,6 +54,8 @@
 	V2D_COMMONVIEW_LIST,
 		/* headers (this is basically the same as listview, but no y-panning) */
 	V2D_COMMONVIEW_HEADER,
+		/* ui listviews, tries to wrap tot inside region width */
+	V2D_COMMONVIEW_LIST_UI,
 } eView2D_CommonViewTypes;
 
 /* ---- Defines for Scroller/Grid Arguments ----- */

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_panel.c	2009-02-10 15:38:00 UTC (rev 18904)
@@ -94,6 +94,22 @@
 
 static void panel_activate_state(bContext *C, Panel *pa, uiHandlePanelState state);
 
+/* ******************************** */
+
+/* temporary code to remove all sbuts stuff from panel code */
+
+static int panel_aligned(ScrArea *sa, ARegion *ar)
+{
+	if(sa->spacetype==SPACE_BUTS) {
+		SpaceButs *sbuts= sa->spacedata.first;
+		return sbuts->align;
+	}
+	else if(ar->regiontype==RGN_TYPE_UI)
+		return BUT_VERTICAL;
+	
+	return 0;
+}
+
 /* ************** panels ************* */
 
 static void copy_panel_offset(Panel *pa, Panel *papar)
@@ -868,15 +884,12 @@
 /* returns 1 when it did something */
 int uiAlignPanelStep(ScrArea *sa, ARegion *ar, float fac)
 {
-	SpaceButs *sbuts= sa->spacedata.first;
 	Panel *pa;
 	PanelSort *ps, *panelsort, *psnext;
 	static int sortcounter= 0;
 	int a, tot=0, done;
+	int align= panel_aligned(sa, ar);
 	
-	if(sa->spacetype!=SPACE_BUTS)
-		return 0;
-	
 	/* count active, not tabbed Panels */
 	for(pa= ar->panels.first; pa; pa= pa->next) {
 		if(pa->active && pa->paneltab==NULL) tot++;
@@ -887,10 +900,10 @@
 	/* extra; change close direction? */
 	for(pa= ar->panels.first; pa; pa= pa->next) {
 		if(pa->active && pa->paneltab==NULL) {
-			if( (pa->flag & PNL_CLOSEDX) && (sbuts->align==BUT_VERTICAL) )
+			if( (pa->flag & PNL_CLOSEDX) && (align==BUT_VERTICAL) )
 				pa->flag ^= PNL_CLOSED;
 			
-			else if( (pa->flag & PNL_CLOSEDY) && (sbuts->align==BUT_HORIZONTAL) )
+			else if( (pa->flag & PNL_CLOSEDY) && (align==BUT_HORIZONTAL) )
 				pa->flag ^= PNL_CLOSED;
 			
 		}
@@ -908,20 +921,24 @@
 		}
 	}
 	
-	if(sbuts->align==BUT_VERTICAL) 
+	if(align==BUT_VERTICAL) 
 		qsort(panelsort, tot, sizeof(PanelSort), find_highest_panel);
 	else
 		qsort(panelsort, tot, sizeof(PanelSort), find_leftmost_panel);
 	
 	/* no smart other default start loc! this keeps switching f5/f6/etc compatible */
 	ps= panelsort;
-	ps->pa->ofsx= 0;
-	ps->pa->ofsy= 0;
+	ps->pa->ofsx= PNL_DIST;
+	if(align==BUT_VERTICAL)
+		ps->pa->ofsy= -ps->pa->sizey-PNL_HEADER-PNL_DIST;
+	else
+		ps->pa->ofsy= 0;
+		
 	
 	for(a=0 ; a<tot-1; a++, ps++) {
 		psnext= ps+1;
 	
-		if(sbuts->align==BUT_VERTICAL) {
+		if(align==BUT_VERTICAL) {
 			psnext->pa->ofsx = ps->pa->ofsx;
 			psnext->pa->ofsy = get_panel_real_ofsy(ps->pa) - psnext->pa->sizey-PNL_HEADER-PNL_DIST;
 		}
@@ -1031,6 +1048,7 @@
 	if(re_align) uiAlignPanelStep(sa, ar, 1.0);
 	
 	if(sa->spacetype!=SPACE_BUTS) {
+#if 0 // XXX make float panel exception
 		SpaceLink *sl= sa->spacedata.first;
 		for(block= ar->uiblocks.first; block; block= block->next) {
 			if(block->active && block->panel && block->panel->active && block->panel->paneltab == NULL) {
@@ -1108,6 +1126,7 @@
 				
 			}
 		}
+#endif
 	}
 
 	/* draw panels, selected on top */
@@ -1217,17 +1236,12 @@
 	uiHandlePanelData *data= panel->activedata;
 	ScrArea *sa= CTX_wm_area(C);
 	ARegion *ar= CTX_wm_region(C);
-	short align=0, dx=0, dy=0;
+	short align= panel_aligned(sa, ar), dx=0, dy=0;
 	
 	/* first clip for window, no dragging outside */
 	if(!BLI_in_rcti(&ar->winrct, event->x, event->y))
 		return;
 
-	if(sa->spacetype==SPACE_BUTS) {
-		SpaceButs *sbuts= sa->spacedata.first;
-		align= sbuts->align;
-	}
-
 	dx= (event->x-data->startx) & ~(PNL_GRID-1);
 	dy= (event->y-data->starty) & ~(PNL_GRID-1);
 	
@@ -1334,11 +1348,8 @@
 			}
 			
 			/* panels now differ size.. */
-			if(sa->spacetype==SPACE_BUTS) {
-				SpaceButs *sbuts= sa->spacedata.first;
-				if(sbuts->align)
-					uiAlignPanelStep(sa, ar, 1.0);
-			}
+			if(panel_aligned(sa, ar))
+				uiAlignPanelStep(sa, ar, 1.0);
 
 			ED_region_tag_redraw(ar);
 		}
@@ -1353,12 +1364,7 @@
 	ScrArea *sa= CTX_wm_area(C);
 	ARegion *ar= CTX_wm_region(C);
 	Panel *pa;
-	int align= 0, button= 0;
-	
-	if(sa->spacetype==SPACE_BUTS) {
-		SpaceButs *sbuts= (SpaceButs*)CTX_wm_space_data(C);
-		align= sbuts->align;
-	}
+	int align= panel_aligned(sa, ar), button= 0;
 
 	/* mouse coordinates in panel space! */
 	
@@ -1423,7 +1429,6 @@
 
 int ui_handler_panel_region(bContext *C, wmEvent *event)
 {
-	ScrArea *sa= CTX_wm_area(C);
 	ARegion *ar= CTX_wm_region(C);
 	uiBlock *block;
 	int retval, mx, my, inside_header= 0, inside_scale= 0;
@@ -1485,8 +1490,9 @@
 		}
 		else
 			zoom=1;
-
+#if 0 // XXX make float panel exception?
 		if(zoom) {
+			ScrArea *sa= CTX_wm_area(C);
 			SpaceLink *sl= sa->spacedata.first;
 
 			if(sa->spacetype!=SPACE_BUTS) {
@@ -1500,6 +1506,7 @@
 				}						
 			}
 		}
+#endif
 	}
 
 	return retval;

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d.c	2009-02-10 15:38:00 UTC (rev 18904)
@@ -231,7 +231,28 @@
 			}
 				break;
 			
-			/* other view types are completely defined using their own settings already */
+			/* ui listviews, tries to wrap 'tot' inside region width */
+			case V2D_COMMONVIEW_LIST_UI:
+			{
+				/* for now, aspect ratio should be maintained, and zoom is clamped within sane default limits */
+				v2d->keepzoom= (V2D_KEEPASPECT|V2D_KEEPZOOM);
+				v2d->minzoom= 0.5f;
+				v2d->maxzoom= 2.0f;
+				
+				v2d->align= (V2D_ALIGN_NO_NEG_X|V2D_ALIGN_NO_POS_Y);
+				v2d->keeptot= V2D_KEEPTOT_BOUNDS;
+				
+				v2d->tot.xmin= 0.0f;
+				v2d->tot.xmax= 336.f; // XXX 320 width + 2 x PNL_DIST
+				
+				v2d->tot.ymax= 0.0f;
+				v2d->tot.ymin= -336.0f*((float)winy)/(float)winx;
+				
+				v2d->cur= v2d->tot;
+				
+			}
+				break;
+				/* other view types are completely defined using their own settings already */
 			default:
 				/* we don't do anything here, as settings should be fine, but just make sure that rect */
 				break;	

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2009-02-10 11:37:14 UTC (rev 18903)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2009-02-10 15:38:00 UTC (rev 18904)
@@ -1299,5 +1299,12 @@
 	
 	/* scrollers */
 	WM_keymap_add_item(keymap, "View2D_OT_scroller_activate", LEFTMOUSE, KM_PRESS, 0, 0);
+	
+	/* Alternative keymap for buttons listview */
+	keymap= WM_keymap_listbase(wm, "View2D Buttons List", 0, 0);
+	WM_keymap_add_item(keymap, "View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0);
+	WM_keymap_add_item(keymap, "View2D_OT_view_downscroll", WHEELDOWNMOUSE, KM_PRESS, 0, 0);

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list