Revision: 22667
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22667
Author:   blendix
Date:     2009-08-21 04:51:56 +0200 (Fri, 21 Aug 2009)

Log Message:
-----------
2.5: Modifiers & Menus

* Popup menus now remember the last clicked item again.
* Modifier and File Format menus are now organized in multiple
  columns with categories.
* Hook, explode, uv project modifiers have all their buttons
  again with the relevant operators implemented.
* Modifiers that can't be added by the user, or don't work on
  curves for example, are not in the menu anymore.
* Fix search menu overlapping buttons when near the bottom of
  the screen.
* Fix uv layers search menu not working in some modifiers.
* Cleanup popup menu code a bit, layout engine is used in more
  cases now instead of ugly position calculation code.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_data_mesh.py
    branches/blender2.5/blender/release/ui/buttons_data_modifier.py
    branches/blender2.5/blender/release/ui/buttons_material.py
    branches/blender2.5/blender/release/ui/space_image.py
    branches/blender2.5/blender/source/blender/blenkernel/BKE_modifier.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
    branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_intern.h
    
branches/blender2.5/blender/source/blender/editors/interface/interface_layout.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_regions.c
    
branches/blender2.5/blender/source/blender/editors/interface/interface_templates.c
    branches/blender2.5/blender/source/blender/editors/object/object_edit.c
    branches/blender2.5/blender/source/blender/editors/object/object_intern.h
    branches/blender2.5/blender/source/blender/editors/object/object_modifier.c
    branches/blender2.5/blender/source/blender/editors/object/object_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/area.c
    
branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_header.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_modifier_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c
    
branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/blender2.5/blender/release/ui/buttons_data_mesh.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-08-21 
00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/release/ui/buttons_data_mesh.py 2009-08-21 
02:51:56 UTC (rev 22667)
@@ -105,7 +105,7 @@
                        row = layout.row()
                        row.itemR(group, "name")
 
-               if context.edit_object:
+               if ob.mode == 'EDIT':
                        row = layout.row()
                        
                        sub = row.row(align=True)
@@ -180,7 +180,7 @@
 
                                layout.itemR(kb, "name")
 
-               if context.edit_object:
+               if ob.mode == 'EDIT':
                        layout.enabled = False
 
 class DATA_PT_uv_texture(DataButtonsPanel):

Modified: branches/blender2.5/blender/release/ui/buttons_data_modifier.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_data_modifier.py     
2009-08-21 00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/release/ui/buttons_data_modifier.py     
2009-08-21 02:51:56 UTC (rev 22667)
@@ -170,7 +170,7 @@
                if md.texture_coordinates == 'OBJECT':
                        layout.itemR(md, "texture_coordinate_object", 
text="Object")
                elif md.texture_coordinates == 'UV' and ob.type == 'MESH':
-                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_layers")
+                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_textures")
        
        def EDGE_SPLIT(self, layout, ob, md):
                split = layout.split()
@@ -187,21 +187,36 @@
        def EXPLODE(self, layout, ob, md):
                layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
                layout.itemR(md, "protect")
-               layout.itemR(md, "split_edges")
-               layout.itemR(md, "unborn")
-               layout.itemR(md, "alive")
-               layout.itemR(md, "dead")
-               # Missing: "Refresh" and "Clear Vertex Group" Operator
+
+               flow = layout.column_flow(2)
+               flow.itemR(md, "split_edges")
+               flow.itemR(md, "unborn")
+               flow.itemR(md, "alive")
+               flow.itemR(md, "dead")
+
+               layout.itemO("object.explode_refresh", text="Refresh");
                
        def FLUID_SIMULATION(self, layout, ob, md):
                layout.itemL(text="See Fluid panel.")
                
        def HOOK(self, layout, ob, md):
-               layout.itemR(md, "falloff")
-               layout.itemR(md, "force", slider=True)
                layout.itemR(md, "object")
                layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
-               # Missing: "Reset" and "Recenter" Operator
+
+               split = layout.split()
+               split.itemR(md, "falloff")
+               split.itemR(md, "force", slider=True)
+
+               layout.itemS()
+
+               row = layout.row()
+               row.itemO("object.hook_reset", text="Reset")
+               row.itemO("object.hook_recenter", text="Recenter")
+
+               if ob.mode == 'EDIT':
+                       row = layout.row()
+                       row.itemO("object.hook_select", text="Select")
+                       row.itemO("object.hook_assign", text="Assign")
                
        def LATTICE(self, layout, ob, md):
                layout.itemR(md, "object")
@@ -222,7 +237,7 @@
 
                layout.itemS()
                
-               layout.itemO("object.modifier_mdef_bind", text="Bind")
+               layout.itemO("object.meshdeform_bind", text="Bind")
                row = layout.row()
                row.itemR(md, "precision")
                row.itemR(md, "dynamic")
@@ -346,16 +361,26 @@
        
        def UV_PROJECT(self, layout, ob, md):
                if ob.type == 'MESH':
-                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_layers")
-                       #layout.itemR(md, "projectors")
+                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_textures")
                        layout.itemR(md, "image")
                        layout.itemR(md, "override_image")
-                       layout.itemL(text="Aspect Ratio:")
-                       col = layout.column(align=True)
-                       col.itemR(md, "horizontal_aspect_ratio", 
text="Horizontal")
-                       col.itemR(md, "vertical_aspect_ratio", text="Vertical")
-                       
-                       #"Projectors" don't work.
+
+                       split = layout.split()
+
+                       col = split.column()
+                       col.itemL(text="Aspect Ratio:")
+
+                       sub = col.column(align=True)
+                       sub.itemR(md, "horizontal_aspect_ratio", 
text="Horizontal")
+                       sub.itemR(md, "vertical_aspect_ratio", text="Vertical")
+
+                       col = split.column()
+                       col.itemL(text="Projectors:")
+
+                       sub = col.column(align=True)
+                       sub.itemR(md, "num_projectors", text="Number")
+                       for proj in md.projectors:
+                               sub.itemR(proj, "object", text="")
                
        def WAVE(self, layout, ob, md):
                split = layout.split()
@@ -387,7 +412,7 @@
                layout.itemR(md, "texture")
                layout.itemR(md, "texture_coordinates")
                if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH':
-                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_layers")
+                       layout.item_pointerR(md, "uv_layer", ob.data, 
"uv_textures")
                elif md.texture_coordinates == 'OBJECT':
                        layout.itemR(md, "texture_coordinates_object")
                

Modified: branches/blender2.5/blender/release/ui/buttons_material.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_material.py  2009-08-21 
00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/release/ui/buttons_material.py  2009-08-21 
02:51:56 UTC (rev 22667)
@@ -48,7 +48,7 @@
                        col.itemO("object.material_slot_add", 
icon="ICON_ZOOMIN", text="")
                        col.itemO("object.material_slot_remove", 
icon="ICON_ZOOMOUT", text="")
 
-                       if context.edit_object:
+                       if ob.mode == 'EDIT':
                                row = layout.row(align=True)
                                row.itemO("object.material_slot_assign", 
text="Assign")
                                row.itemO("object.material_slot_select", 
text="Select")

Modified: branches/blender2.5/blender/release/ui/space_image.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_image.py       2009-08-21 
00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/release/ui/space_image.py       2009-08-21 
02:51:56 UTC (rev 22667)
@@ -247,7 +247,7 @@
 
                        """
                        mesh = context.edit_object.data
-                       row.item_pointerR(mesh, "active_uv_layer", mesh, 
"uv_layers")
+                       row.item_pointerR(mesh, "active_uv_layer", mesh, 
"uv_textures")
                        """
 
                if ima:

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_modifier.h        
2009-08-21 00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_modifier.h        
2009-08-21 02:51:56 UTC (rev 22667)
@@ -90,7 +90,10 @@
        eModifierTypeFlag_UsesPointCache = (1<<6),
 
        /* For physics modifiers, max one per type */
-       eModifierTypeFlag_Single = (1<<7)
+       eModifierTypeFlag_Single = (1<<7),
+
+       /* Some modifier can't be added manually by user */
+       eModifierTypeFlag_NoUserAdd = (1<<8)
 } ModifierTypeFlag;
 
 typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct 
Object **obpoin);

Modified: 
branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c     
2009-08-21 00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c     
2009-08-21 02:51:56 UTC (rev 22667)
@@ -8616,7 +8616,8 @@
                mti->freeData = smokeHRModifier_freeData; 
                mti->flags = eModifierTypeFlag_AcceptsMesh 
                                | eModifierTypeFlag_UsesPointCache
-                               | eModifierTypeFlag_Single;
+                               | eModifierTypeFlag_Single
+                               | eModifierTypeFlag_NoUserAdd;
                mti->deformVerts = smokeHRModifier_deformVerts;
                mti->dependsOnTime = smokeHRModifier_dependsOnTime;
                mti->updateDepgraph = smokeHRModifier_updateDepgraph;
@@ -8647,7 +8648,7 @@
                mti = INIT_TYPE(Surface);
                mti->type = eModifierTypeType_OnlyDeform;
                mti->initData = surfaceModifier_initData;
-               mti->flags = eModifierTypeFlag_AcceptsMesh;
+               mti->flags = 
eModifierTypeFlag_AcceptsMesh|eModifierTypeFlag_NoUserAdd;
                mti->dependsOnTime = surfaceModifier_dependsOnTime;
                mti->freeData = surfaceModifier_freeData; 
                mti->deformVerts = surfaceModifier_deformVerts;

Modified: 
branches/blender2.5/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-08-21 00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/source/blender/editors/include/UI_interface.h   
2009-08-21 02:51:56 UTC (rev 22667)
@@ -100,6 +100,8 @@
 #define UI_BLOCK_KEEP_OPEN             256
 #define UI_BLOCK_POPUP                 512
 #define UI_BLOCK_OUT_1                 1024
+#define UI_BLOCK_NO_FLIP               2048
+#define UI_BLOCK_POPUP_MEMORY  4096
 
 /* uiPopupBlockHandle->menuretval */
 #define UI_RETURN_CANCEL       1       /* cancel all menus cascading */
@@ -254,8 +256,6 @@
 void uiPupMenuError(struct bContext *C, char *str, ...);
 void uiPupMenuReports(struct bContext *C, struct ReportList *reports);
 
-void uiPupMenuSetActive(int val);
-
 /* Popup Blocks
  *
  * Functions used to create popup blocks. These are like popup menus

Modified: 
branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c    
2009-08-21 00:46:36 UTC (rev 22666)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c    
2009-08-21 02:51:56 UTC (rev 22667)
@@ -225,6 +225,7 @@
        uiStyle *style= U.uistyles.first;       // XXX pass on as arg
        uiBut *bt;
        int i = 0, j, x1addval= offset, nextcol;
+       int lastcol= 0, col= 0;
        
        uiStyleFontSet(&style->widget);
        
@@ -237,18 +238,26 @@
 
                        if(j > i) i = j;
                }
+
+               if(bt->next && bt->x1 < bt->next->x1)
+                       lastcol++;
        }
 
        /* cope with multi collumns */
        bt= block->buttons.first;
        while(bt) {
-               if(bt->next && bt->x1 < bt->next->x1)
+               if(bt->next && bt->x1 < bt->next->x1) {
                        nextcol= 1;
+                       col++;
+               }
                else nextcol= 0;
                
                bt->x1 = x1addval;
                bt->x2 = bt->x1 + i + block->bounds;
                
+               if(col == lastcol)
+                       bt->x2= MAX2(bt->x2, offset + block->minbounds);
+
                ui_check_but(bt);       // clips text again
                
                if(nextcol)
@@ -281,7 +290,7 @@
        
                        if(bt->x2 > block->maxx) block->maxx= bt->x2;
                        if(bt->y2 > block->maxy) block->maxy= bt->y2;
-                       
+
                        bt= bt->next;
                }
                
@@ -291,6 +300,8 @@
                block->maxy += block->bounds;
        }
 
+       block->maxx= block->minx + MAX2(block->maxx - block->minx, 
block->minbounds);
+
        /* hardcoded exception... but that one is annoying with larger safety 
*/ 
        bt= block->buttons.first;
        if(bt && strncmp(bt->str, "ERROR", 5)==0) xof= 10;
@@ -2286,8 +2297,12 @@
                                dynstr= BLI_dynstr_new();
                                BLI_dynstr_appendf(dynstr, "%s%%t", 
RNA_property_ui_name(prop));
                                for(i=0; i<totitem; i++) {
-                                       if(!item[i].identifier[0])
-                                               BLI_dynstr_append(dynstr, 
"|%l");
+                                       if(!item[i].identifier[0]) {

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to