2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  $ Id $ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  BEGIN  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  free  software ;  you  can  redistribute  it  and / or 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  modify  it  under  the  terms  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  as  published  by  the  Free  Software  Foundation ;  either  version  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  the  License ,  or  ( at  your  option )  any  later  version .  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  This  program  is  distributed  in  the  hope  that  it  will  be  useful , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  but  WITHOUT  ANY  WARRANTY ;  without  even  the  implied  warranty  of 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  MERCHANTABILITY  or  FITNESS  FOR  A  PARTICULAR  PURPOSE .   See  the 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  GNU  General  Public  License  for  more  details . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  You  should  have  received  a  copy  of  the  GNU  General  Public  License 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  along  with  this  program ;  if  not ,  write  to  the  Free  Software  Foundation , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Inc . ,  59  Temple  Place  -  Suite  330 ,  Boston ,  MA   02111 - 1307 ,  USA . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  Original  Code  is  Copyright  ( C )  2008  Blender  Foundation . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  All  rights  reserved . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Contributor ( s ) :  Blender  Foundation 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  END  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <string.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  <stdio.h> 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_space_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-24 10:33:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_node_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "DNA_material_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_texture_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "DNA_scene_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_screen_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "DNA_windowmanager_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "MEM_guardedalloc.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BLI_blenlib.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-18 02:56:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_context.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "BKE_screen.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_node.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BKE_main.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "ED_screen.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-19 12:48:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "ED_types.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "ED_util.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "WM_api.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "WM_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BIF_gl.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "BIF_glutil.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "UI_interface.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "UI_resources.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "UI_view2d.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "node_intern.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* ************************ header area region *********************** */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_node_selectmenu ( bContext  * C ,  void  * arg ,  int  event )  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* functions in editnode.c assume there's a tree */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( snode - > nodetree = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 :  /* border select */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_border_select(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 :  /* select/deselect all */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_deselectall(snode, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 : 	/* select linked in */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_select_linked(snode, 0);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 : 	/* select linked out */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_select_linked(snode, 1);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_area_tag_redraw ( curarea ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2008-12-24 10:33:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  uiBlock  * node_selectmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  yco =  0 ,  menuwidth = 120 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_selectmenu " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_selectmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Border Select|B " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  1 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Select/Deselect All|A " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  2 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Select Linked From|L " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  3 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Select Linked To|Shift L " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  4 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( curarea - > headertype = = HEADERTOP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_TOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockFlipOrder ( block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  50 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								void  do_node_addmenu ( bContext  * C ,  void  * arg ,  int  event )  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									#if 0 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// XXX enable
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-18 02:56:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bNode  * node ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									float  locx ,  locy ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  mval [ 2 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* store selection in temp test flag */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for ( node =  snode - > edittree - > nodes . first ;  node ;  node =  node - > next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( node - > flag  &  NODE_SELECT )  node - > flag  | =  NODE_TEST ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  node - > flag  & =  ~ NODE_TEST ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									toolbox_mousepos ( mval ,  0  ) ;  /* get initial mouse position */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									areamouseco_to_ipoco ( G . v2d ,  mval ,  & locx ,  & locy ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node =  node_add_node ( snode ,  event ,  locx ,  locy ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* uses test flag */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// XXX snode_autoconnect(snode, node, NODE_TEST);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// XXX addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BIF_undo_push ( " Add Node " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# endif 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  node_make_addmenu ( bContext  * C ,  int  nodeclass ,  uiBlock  * block )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Main  * bmain =  CTX_data_main ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bNodeTree  * ntree ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  tot =  0 ,  a ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  yco =  0 ,  menuwidth = 120 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ntree  =  snode - > nodetree ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ntree )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* mostly taken from toolbox.c, node_add_sublevel() */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ntree )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( nodeclass = = NODE_CLASS_GROUP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												bNodeTree  * ngroup =  bmain - > nodetree . first ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( ;  ngroup ;  ngroup =  ngroup - > id . next ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( ngroup - > type = = ntree - > type ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tot + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												bNodeType  * type  =  ntree - > alltypes . first ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												while ( type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( type - > nclass  = =  nodeclass ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														tot + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													type =  type - > next ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( tot = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( nodeclass = = NODE_CLASS_GROUP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bNodeTree  * ngroup =  bmain - > nodetree . first ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( tot = 0 ,  a = 0 ;  ngroup ;  ngroup =  ngroup - > id . next ,  tot + + )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( ngroup - > type = = ntree - > type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  ( ngroup - > id . name + 2 ) ,  0 ,  
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:14:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1.0f ,  ( float ) ( NODE_GROUP_MENU + tot ) ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													a + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											bNodeType  * type ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											int  script = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( a = 0 ,  type =  ntree - > alltypes . first ;  type ;  type = type - > next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if (  type - > nclass  = =  nodeclass  )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( type - > type  = =  NODE_DYNAMIC )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  type - > name ,  0 ,  
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:14:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
															yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1.0f ,  ( float ) ( NODE_DYNAMIC_MENU + script ) ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														script + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  type - > name ,  0 ,  
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:14:52 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
														yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1.0f ,  ( float ) ( type - > type ) ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													a + + ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_inputmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_inputmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_INPUT ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_outputmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_outputmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_OUTPUT ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_colormenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_colormenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_OP_COLOR ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_vectormenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_vectormenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_OP_VECTOR ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_filtermenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_filtermenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_OP_FILTER ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_convertermenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_convertermenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_CONVERTOR ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_mattemenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_mattemenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_MATTE ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_distortmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_distortmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_DISTORT ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_patternmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,   void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_patternmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_PATTERN ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_texturemenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_texturemenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_TEXTURE ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_groupmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_groupmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_GROUP ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_add_dynamicmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_add_dynamicmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									node_make_addmenu ( C ,  NODE_CLASS_OP_DYNAMIC ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetDirection ( block ,  UI_RIGHT ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  60 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_addmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  yco =  0 ,  menuwidth = 120 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_addmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_addmenu ,  NULL ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( snode - > treetype = = NTREE_SHADER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_inputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Input " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_outputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Output " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_colormenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Color " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_vectormenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Vector " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_convertermenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Convertor " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_groupmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Group " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_dynamicmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Dynamic " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if ( snode - > treetype = = NTREE_COMPOSIT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_inputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Input " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_outputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Output " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_colormenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Color " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_vectormenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Vector " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_filtermenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Filter " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_convertermenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Convertor " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_mattemenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Matte " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_distortmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Distort " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_groupmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Group " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  else  if ( snode - > treetype = = NTREE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_inputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Input " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_outputmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Output " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_colormenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Color " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_patternmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Patterns " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_texturemenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Textures " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_convertermenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Convertor " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_distortmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Distort " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBlockBut ( block ,  node_add_groupmenu ,  NULL ,  ICON_RIGHTARROW_THIN ,  " Group " ,  0 ,  yco - = 20 ,  120 ,  19 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 	
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( curarea - > headertype = = HEADERTOP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_TOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockFlipOrder ( block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  50 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  void  do_node_nodemenu ( bContext  * C ,  void  * arg ,  int  event )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ;  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  fromlib = 0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* functions in editnode.c assume there's a tree */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( snode - > nodetree = = NULL ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fromlib =  ( snode - > id  & &  snode - > id - > lib ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  1 :  /* grab/move */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_transform_ext(0,0);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 :  /* duplicate */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( fromlib )  fromlib =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  ;  // XXX node_adduplicate(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 :  /* delete */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( fromlib )  fromlib =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  ;  // XXX node_delete(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 :  /* make group */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_make_group(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  5 :  /* ungroup */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_ungroup(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  6 :  /* edit group */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( fromlib )  fromlib =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  ;  // XXX snode_make_group_editable(snode, NULL);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  7 :  /* hide/unhide */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_hide(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  8 :  /* read saved render layers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_read_renderlayers(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  9 :  /* show cyclic */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX ntreeSolveOrder(snode->edittree);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  10 :  /* execute */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXXX addqueue(curarea->win, UI_BUT_EVENT, B_NODE_TREE_EXEC);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  11 :  /* make link */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_make_link(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  12 :  /* rename */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_rename(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  13 :  /* read saved full sample layers */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_read_fullsamplelayers(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  14 :  /* connect viewer */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX node_active_link_viewer(snode);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// XXX if(fromlib==-1) error_libdata();
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_area_tag_redraw ( curarea ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_nodemenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  yco =  0 ,  menuwidth = 120 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_nodemenu " ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_nodemenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Grab/Move|G " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  1 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Duplicate|Shift D " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  2 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Delete|X " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  3 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Make Link|F " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  11 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Make Group|Ctrl G " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  4 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Ungroup|Alt G " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  5 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Edit Group|Tab " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  6 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Hide/Unhide|H " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  7 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Rename|Ctrl R " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  12 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( snode - > treetype = = NTREE_COMPOSIT )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Execute Composite|E " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  10 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Read Saved Render Results|R " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  8 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Read Saved Full Sample Results|Shift R " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  13 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Connect Node to Viewer|Ctrl RMB " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  14 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Show Cyclic Dependencies|C " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  9 ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( curarea - > headertype = = HEADERTOP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_TOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockFlipOrder ( block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  50 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_node_viewmenu ( bContext  * C ,  void  * arg ,  int  event )  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-01-01 16:27:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ARegion  * ar =  CTX_wm_region ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScrArea  * sa =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									switch ( event )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 16:27:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										/* cases 1 and 2 are now handled automagically by View2D code */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  1 :  /* Zoom in */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  2 :  /* View all */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  3 :  /* View all */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 16:27:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											printf ( " calling snode_home \n " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//snode_home(sa, ar, snode);
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  4 :  /* Grease Pencil */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											// XXX add_blockhandler(sa, NODES_HANDLER_GREASEPENCIL, UI_PNL_UNSTOW);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ED_area_tag_redraw ( sa ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  uiBlock  * node_viewmenu ( bContext  * C ,  uiMenuBlockHandle  * handle ,  void  * arg_unused )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ScrArea  * curarea =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									short  yco =  0 ,  menuwidth = 120 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  handle - > region ,  " node_viewmenu " ,  UI_EMBOSSP ,  UI_HELV ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetButmFunc ( block ,  do_node_viewmenu ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( snode - > nodetree )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_MENU_PANEL ,  " Grease Pencil... " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  4 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Zoom In|NumPad + " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  1 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " Zoom Out|NumPad - " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  2 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefBut ( block ,  SEPR ,  0 ,  " " ,         0 ,  yco - = 6 ,  menuwidth ,  6 ,  NULL ,  0.0 ,  0.0 ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconTextBut ( block ,  BUTM ,  1 ,  ICON_BLANK1 ,  " View All|Home " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  1 ,  3 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* XXX if (!curarea->full) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  B_FULL ,  ICON_BLANK1 ,  " Maximize Window|Ctrl UpArrow " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  0 ,  4 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefIconTextBut ( block ,  BUTM ,  B_FULL ,  ICON_BLANK1 ,  " Tile Window|Ctrl DownArrow " ,  0 ,  yco - = 20 ,  menuwidth ,  19 ,  NULL ,  0.0 ,  0.0 ,  0 ,  4 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									*/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( curarea - > headertype = = HEADERTOP )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_DOWN ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetDirection ( block ,  UI_TOP ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockFlipOrder ( block ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-14 12:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiTextBoundsBlock ( block ,  50 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  block ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  void  do_node_buttons ( bContext  * C ,  void  * arg ,  int  event )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									switch ( event )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								void  node_header_buttons ( const  bContext  * C ,  ARegion  * ar )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-12-18 02:56:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ScrArea  * sa =  CTX_wm_area ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									SpaceNode  * snode =  ( SpaceNode * ) CTX_wm_space_data ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Scene  * scene =  CTX_data_scene ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									uiBlock  * block ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									short  xco ,  yco =  3 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									block =  uiBeginBlock ( C ,  ar ,  " header node " ,  UI_EMBOSS ,  UI_HELV ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									uiBlockSetHandleFunc ( block ,  do_node_buttons ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-14 12:16:55 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									xco =  ED_area_header_standardbuttons ( C ,  block ,  yco ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ( sa - > flag  &  HEADER_NO_PULLDOWN ) = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										int  xmax ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										/* pull down menus */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiBlockSetEmboss ( block ,  UI_EMBOSSP ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										xmax =  GetButStringLength ( " View " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										uiDefPulldownBut ( block ,  node_viewmenu ,  NULL ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													  " View " ,  xco ,  yco - 2 ,  xmax - 3 ,  24 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  xmax ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xmax =  GetButStringLength ( " Select " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefPulldownBut ( block ,  node_selectmenu ,  NULL ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														 " Select " ,  xco ,  yco - 2 ,  xmax - 3 ,  24 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  xmax ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xmax =  GetButStringLength ( " Add " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefPulldownBut ( block ,  node_addmenu ,  NULL ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														 " Add " ,  xco ,  yco - 2 ,  xmax - 3 ,  24 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  xmax ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xmax =  GetButStringLength ( " Node " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefPulldownBut ( block ,  node_nodemenu ,  NULL ,  
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														 " Node " ,  xco ,  yco - 2 ,  xmax - 3 ,  24 ,  " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  xmax ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetEmboss ( block ,  UI_EMBOSS ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockSetEmboss ( block ,  UI_EMBOSS ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* main type choosing */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockBeginAlign ( block ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconButI ( block ,  ROW ,  B_REDR ,  ICON_MATERIAL_DEHLT ,  xco , 2 , XIC , YIC - 2 , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  & ( snode - > treetype ) ,  2.0f ,  0.0f ,  0.0f ,  0.0f ,  " Material Nodes " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									xco + =  XIC ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconButI ( block ,  ROW ,  B_REDR ,  ICON_IMAGE_DEHLT ,  xco , 2 , XIC , YIC - 2 , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  & ( snode - > treetype ) ,  2.0f ,  1.0f ,  0.0f ,  0.0f ,  " Composite Nodes " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									xco + =  XIC ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiDefIconButI ( block ,  ROW ,  B_REDR ,  ICON_TEXTURE_DEHLT ,  xco , 2 , XIC , YIC - 2 , 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												  & ( snode - > treetype ) ,  2.0f ,  2.0f ,  0.0f ,  0.0f ,  " Texture Nodes " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									xco + =  2 * XIC ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiBlockEndAlign ( block ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* find and set the context */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									snode_set_context ( snode ,  scene ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( snode - > treetype = = NTREE_SHADER )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( snode - > from )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		/* 0, NULL -> pin */ 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// XXX xco= std_libbuttons(block, xco, 0, 0, NULL, B_MATBROWSE, ID_MA, 1, snode->id, snode->from, &(snode->menunr), 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//   B_MATALONE, B_MATLOCAL, B_MATDELETE, B_AUTOMATNAME, B_KEEPDATA);
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( snode - > id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Material  * ma =  ( Material  * ) snode - > id ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												uiDefButC ( block ,  TOG ,  B_NODE_USEMAT ,  " Use Nodes " ,  xco + 5 , 0 , 90 , 19 ,  & ma - > use_nodes ,  0.0f ,  0.0f ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												xco + = 80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if ( snode - > treetype = = NTREE_COMPOSIT )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										uiDefButS ( block ,  TOG ,  B_NODE_USESCENE ,  " Use Nodes " ,  xco + 5 , 0 , 90 , 19 ,  & scene - > use_nodes ,  0.0f ,  0.0f ,  0 ,  0 ,  " Indicate this Scene will use Nodes and execute them while editing " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 23:49:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										xco + =  90 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefButBitI ( block ,  TOG ,  R_COMP_FREE ,  B_NOP ,  " Free Unused " ,  xco + 5 , 0 , 100 , 19 ,  & scene - > r . scemode ,  0.0f ,  0.0f ,  0 ,  0 ,  " Free Nodes that are not used while composite " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  100 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										uiDefButBitS ( block ,  TOG ,  SNODE_BACKDRAW ,  REDRAWNODE ,  " Backdrop " ,  xco + 5 , 0 , 90 , 19 ,  & snode - > flag ,  0.0f ,  0.0f ,  0 ,  0 ,  " Use active Viewer Node output as backdrop " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										xco + =  90 ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if ( snode - > treetype = = NTREE_TEXTURE )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( snode - > from )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											// XXX xco= std_libbuttons(block, xco, 0, 0, NULL, B_TEXBROWSE, ID_TE, 1, snode->id, snode->from, &(snode->menunr), 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//		   B_TEXALONE, B_TEXLOCAL, B_TEXDELETE, B_AUTOTEXNAME, B_KEEPDATA);
 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( snode - > id )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Tex  * tx =  ( Tex  * ) snode - > id ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 20:41:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												uiDefButC ( block ,  TOG ,  B_NODE_USETEX ,  " Use Nodes " ,  xco + 5 , 0 , 90 , 19 ,  & tx - > use_nodes ,  0.0f ,  0.0f ,  0 ,  0 ,  " " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 18:29:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												xco + = 80 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 23:49:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									UI_view2d_totRect_set ( & ar - > v2d ,  xco + XIC + 100 ,  ( int ) ( ar - > v2d . tot . ymax - ar - > v2d . tot . ymin ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									uiEndBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 13:11:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									uiDrawBlock ( C ,  block ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-13 18:09:49 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}