[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22667] branches/blender2.5/blender: 2.5: Modifiers & Menus
Brecht Van Lommel
brecht at blender.org
Fri Aug 21 04:51:58 CEST 2009
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. @@
More information about the Bf-blender-cvs
mailing list